4. NSUserDefaults(またはその他のデータストアの現在の値を取得するには、実際に)
私は同じ問題に遭遇し、別のデータストア(NSUserDefaults)に物事を保存するという従来のオプションを選択しました。私のケースでは、ユーザーがアイテムを最後に閲覧したときに、このデータをNSUserDefaultsに適切に保存していたことを保存していました。(モデルオブジェクトを表示およびレンダリングされている、ここでself
)
まず、あなたが保管されているオブジェクトの一意のキーを定義します:私は次のような何かをした
- (NSString *)lastViewedDateKey {
// Note each item gets a unique key with <className>_<itemId> guaranteeing us uniqueness
return [NSString stringWithFormat:@"%@_%ld", self.class.className, (long)self.itemId];
}
そして、ユーザが見るとき項目は、にキーを設定:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *createdOnDate = <passed in from elsewhere>;
NSDate *lastViewedDate = [userDefaults objectForKey:self.lastViewedDateKey];
if (!lastViewedDate || [createdOnDate compare:lastViewedDate] == NSOrderedDescending) {
...
}
:
- (void)setLastViewedToNow {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:[NSDate date] forKey:self.lastViewedDateKey];
[userDefaults synchronize];
}
その後、私はこのようにそれを使用します上記のソリューションと対照的に: 1.データの永続性はありません。 2.これは、オブジェクトのプロパティを定義しなければならないさらに別の場所を作成し、新しいプロパティが追加されるたびにこのリストを更新することを忘れると、エラーにつながる可能性があります。 3.大きなバッチ更新を行っている場合は、すべてのオブジェクトを元に戻すことは実際的ではなく、確かに痛みの原因になります。
これが必要な場合、これは誰かに別のオプションを与えてくれることを願っています。
Realmに「お気に入り」を保存したくないと言っていますか?そうであれば、動的プロパティがRealmに保存されるので、 'dynamic'を削除してください。 – Abhinav
「お気に入り」はリモートデータベースには格納されていないので、毎回アプリを開き、プライマリキー 'id'に基づいて新しいオブジェクトを追加し、既存のものを更新すると、お気に入りの値をデフォルトに設定します')。それがデフォルトに更新されないようにすることはできますか? –
これは奇妙です。私は、Realmの 'createOrUpdate'メソッドが辞書に指定されていないプロパティに触れないと想定していました。 RealmにAPIデータを実際に保存/更新しているサンプルコードを含めてください。 – TiM