【Apple WWDC24】Swift ネタをサンプルコードとともに眺めていくページ

いよいよです。



👉 WWDC24 - Apple Developer hatena-bookmark

Apple 公式の GitHub では、

「sample」

の prefix をつけてリポジトリを公開していますよね。

洗練されていて、Swift の方向性も示されてるようで。

👉 Repository search results hatena-bookmark

いや、もしかしたら、GitHub 公開は遅れるかもしれん。

(更新中 ...)



【Swift】String と Data の変換

という bytes っぽい型があるんですね !

👉 Data | Apple Developer Documentation hatena-bookmark

String との変換です。

 

🧑‍💻 String から Data


let string = "Hello, world!"

// String to Data

let data = Data(string.utf8)
let optionalData = string.data(using: .utf8)

print(data)
// 13 bytes

// Expression implicitly coerced from 'Data?' to 'Any'
print(optionalData)
// Optional(13 bytes)

 

🧑‍💻 Data から String

上のコードからのつづきです。


// Data to String

// Expression implicitly coerced from 'String?' to 'Any'
print(String(data: data, encoding: .utf8))
// Optional("Hello, world!")

print(String(data: data, encoding: .utf8) ?? "")
// Hello, world!

print(String(data: data, encoding: .utf8)!)
// Hello, world!

print(String(decoding: data, as: UTF8.self))
// Hello, world!

 

🧑‍💻 参考

いろいろ見たけど、良さげなエントリーのみ。

👉 How to convert Data to a String - free Swift example code and tips hatena-bookmark
👉 How to convert a String to Data - free Swift example code and tips hatena-bookmark
👉 Swift Tip: String to Data and Back · objc.io hatena-bookmark
👉 Converting between String and Data without optionals | Swift by Sundell hatena-bookmark
👉 Swift String to Data | Convert Data to String | Viking Skull Apps hatena-bookmark

Swift 5からはStringの内部データがUTF-8になったのでした

👉 [Swift] string.data(using: .utf8)ってnilになるの? #Swift - Qiita hatena-bookmark

今の Swift では、String 内部エンコーディングが「UTF-8」ってこと大事。


【macOS】Find and remove all .DS_Store files

🧑🏻‍💻 Terminal から .DS_Store を消す方法

MacのFinderは、各フォルダのメタデータを保存するために .DS_Store ファイルを生成します。しかし、これらのファイルが不要な場合や煩わしい場合もあります。カレントディレクトリ配下のすべての .DS_Store ファイルを確認するには、以下のコマンドを使用します。


find . -type f -name ".DS_Store"

このコマンドは、現在のディレクトリとそのサブディレクトリ内のすべての .DS_Store ファイルをリストアップします。次に、これらのファイルを一括で削除するには、以下のコマンドを実行します。


find . -type f -name ".DS_Store" -delete

これにより、指定されたディレクトリ以下のすべての .DS_Store ファイルが削除され、ディレクトリがクリーンになります。

 

🧑🏻‍💻 .DS_Store ファイルの自動作成を制御する方法

ネットワークドライブや外部ドライブにアクセスする際に .DS_Store ファイルが生成されるのを防ぎたい場合、以下のコマンドを使って自動生成を停止できます。


defaults write com.apple.desktopservices DSDontWriteNetworkStores True
killall Finder

この設定により、これらのドライブに対して .DS_Store ファイルが作成されなくなります。必要に応じて、再度作成を許可する場合は、以下のコマンドを実行します。


defaults write com.apple.desktopservices DSDontWriteNetworkStores False
killall Finder

これにより、元の設定に戻すことができます。

 

🧑🏻‍💻 まとめ

.DS_Store ファイルはFinderのメタデータを保存するために重要な役割を果たしますが、時には不要で煩わしいこともあります。Terminalを使用してこれらのファイルを削除したり、自動生成を制御する方法を知っておくと、作業環境を整えるのに役立ちます。また、macOSのバージョンによっては .DS_Store ファイルの仕様が変わることがあるため、新しいバージョンにアップデートした際には設定を再確認することが重要です。これにより、効率的でスムーズな作業環境を維持できます。

 

🧑🏻‍💻 まとめ

結局、消さないほうがいい。

制御するなら以下のどれかで。


// newtork drive
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
defaults write com.apple.desktopservices DSDontWriteNetworkStores false

// removable drive
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool false

// finder
defaults write com.apple.finder AppleShowAllFiles -boolean false;killall Finder
defaults write com.apple.finder AppleShowAllFiles FALSE;killall Finder
defaults write com.apple.Finder AppleShowAllFiles TRUE;killall Finder
defaults write com.apple.finder AppleShowAllFiles -boolean true;killall Finder

.gitignore とかリモートクライアントの設定で操作するべし。

Apple の意図は汲んだほうがいいと思える。