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];
}
Затем, когда пользователь просматривает элемент, установите ключ:
- (void)setLastViewedToNow {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:[NSDate date] forKey:self.lastViewedDateKey];
[userDefaults synchronize];
}
Позже, я использую его, как это:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *createdOnDate = <passed in from elsewhere>;
NSDate *lastViewedDate = [userDefaults objectForKey:self.lastViewedDateKey];
if (!lastViewedDate || [createdOnDate compare:lastViewedDate] == NSOrderedDescending) {
...
}
В отличие от вышеперечисленных решений: 1. Настойчивость данных не сохраняется. 2. Это создает еще одно место, где нужно определить свойства объекта и, вероятно, приведет к ошибкам, если один из них забывает обновлять этот список каждый раз, когда добавляется новое свойство. 3. Если вы делаете большие обновления пакета, возврат к каждому объекту не очень практичен и, безусловно, вызовет боль в дороге.
Я надеюсь, что это даст кому-то другой вариант, если он в этом нуждается.
Вы говорите, что не хотите сохранять «любимый» в Царстве? Если это так, удалите 'dynamic', так как динамические свойства сохраняются в Realm. – Abhinav
Я говорю, что 'favorite' не хранится в удаленной базе данных, поэтому каждый раз открывайте приложение, добавляя новые объекты и обновляя существующие на основе первичного ключа' id', он установит для любимого значения значение по умолчанию ('false '). Могу ли я избежать его обновления до значения по умолчанию? –
Это странно. Я бы предположил, что методы createOrUpdate в Realm не будут касаться свойств, которые не указаны в словаре. Можете ли вы указать пример кода, в котором вы фактически сохраняете/обновляете данные API в Realm? – TiM