Plist飛ぶ
とあるアプリのレビューに「iOS8に対応お願いします!」みたいな事が書いてあって、特に不具合無かったのになーと思ってよくよく調べてみるとデータの保存が出来ていませんでした。
データは全部NSUserDefaultsに突っ込んでたので、plistを確認してみると…
見事に真っ白!
どうやらNSUserDefaultsに詰め込み過ぎてデータが飛んだっぽいです。iOS7までは大丈夫だったのに…
と言っても数千〜万単位の登録件数があったので、ちゃんとした使い方をすればまずならない現象なんですがねw
NSUserDefaultsで保存するPlistのファイル名
結構規模の大きいアプリなので、今からデータの管理方法変えるのはメンドクサイ、なんとかNSUserDefaultsを使ったままで行きたい。と考えていたらどうやらNSUserDefaultsで保存するplist名は変更できる様子。
//設定しているidentifierの名前でplistが出来る NSUserDefaults* standardDef = [NSUserDefaults standardUserDefaults]; //hoge.plistが出来る NSUserDefaults* keyDef = [[NSUserDefaults alloc] initWithSuiteName:@"hoge"];
ということで複数のplistを作って分散して保存すれば行けそう…!
NSUserDefaultsで保存するPlistのファイル名
それで実際やったのが以下のコード
保存する際のkeyを使って"そのkeyの長さ" + "末尾一文字".plistを使うように。
(keyの長さだけじゃ分散し切れなかった)
苦肉の策ではありますが、なんとかデータは消えなくなったのでとりあえず良いか…
良くはない!!