NSUserDefaultsのクリア

アプリの環境設定を保存するのにNSUserDefaultsを便利に使っていますが、クリアの仕方がよく分からなかったので調べました。自作のアプリをテストする時に、インストール直後の状態のテストをいろんなパターンでやりたくて簡単にクリアしたくなったのです。
iOSアプリの場合は、CS193Pの講義でも触れられていたので、アプリを削除してしまえばクリアできるのは分かっていたのですが、Macアプリの場合が分かりません。軽くググってみても、それらしき記事は見つかりません。次の場所にユーザデフォルトのファイルが作成されるという記事はたくさん見かけたのですが、Xcode4でデバッグしているときは、ここにはファイルは作成されないようです。

~/Library/Preferences/アプリのidentifier.plist

もしかして、デバッグ中は違うファイル名でこの場所に作成されるのかもと思って、1時間くらいこのフォルダを監視しつつ、変更になったファイルの中身を確認してみたりしましたが、ありませんでした。

そして、途方に暮れて最後の手段でNSUserDefaultsをキーワードにAppleのドキュメントを見てみたら、クリアの仕方がのっていました。

MacアプリのNSUserDefaultsをクリアする方法

アプリのidentifierが”com.cacao.PasteShogibanForMac”の場合の例です。ターミナルで操作します。

#現在保存されている値の確認
$ defaults read com.cacao.PasteShogibanForMac
{
    "PasteShogiban.iCloud" = 0;
    "PasteShogiban.token" = 59d8168db05b86c6c5849f204c007308;
    "PasteShogiban.userID" = 21;
}
#値をクリア
$ defaults delete com.cacao.PasteShogibanForMac
#クリアされていることを確認
$ defaults read com.cacao.PasteShogibanForMac
2012-02-12 13:36:29.740 defaults[4323:707]
Domain com.cacao.PasteShogibanForMac does not exist

(参考:Data Management > Preference Settings > User Defaults Programming Topics > About the User Defaults System > Viewing Preferences Using the Defaults Tool)

いやぁ、ドキュメントは最初に確認しないといけませんね^^;;

ググっていると、iOSアプリの消し方がたくさんでてきたので、ついでに書いておきます。

IOSアプリのNSUserDefaultsをクリアする方法

シミュレータの場合

次の場所にアプリのidentifierのファイルが作成されますので、それをゴミ箱に入れればクリアできます。

~/Library/Application Support/iPhone Simulator/5.0/Applications/〜UUIDらしき記号〜/Library/Preferences/

※上記のディレクトリの5.0の部分は、環境によっては違う番号になっているかもしれません。

実機の場合

実機をMacに繋げてから、XcodeのOrganizerを起動して、Devicesを選択します。そして、左の実機の部分のApplicationsを選択すると、右側にフォルダが表示されるので、その中に次のそれっぽいファイルがあります。

Library/Preferences/アプリのidentifider.plist


しかし、削除できません…。下にある削除ボタンを押すとアプリが削除されます。どうやら、実機はアプリを削除するしかないようですね。