Ответ 1
Один стандартный метод заключается в определении preview
в качестве атрибута переходного процесса в модели Core Data (так что это значение фактически не сохраняется в базе данных) и реализовать собственный метод getter. В вашем случае это будет выглядеть так:
- (NSString *)preview
{
[self willAccessValueForKey:@"preview"];
NSString *preview = [self primitiveValueForKey:@"preview"];
[self didAccessValueForKey:@"preview"];
if (preview == nil) {
if ([self.body length] < 200) {
preview = self.body;
} else {
preview = [self.body substringWithRange:NSMakeRange(0, 200)];
}
[self setPrimitiveValue:preview forKey:@"preview"];
}
return preview;
}
(Вы можете предоставить настраиваемые методы getter, setter для @dynamic-свойств. Однако Core Data
свойства не просто подкрепляются переменными экземпляра. Вот почему вы не можете
доступ _preview
.)
Если вам нужно пересчитать preview
, если изменяется атрибут body
, тогда вы
должен также реализовать собственный метод настройки для body
, который устанавливает preview
обратно на nil
.
Для получения дополнительной информации прочитайте Нестандартные постоянные атрибуты в "Руководстве по программированию основных данных".
Обновление: Текущая версия Руководства по программированию основных данных больше не содержат эту главу. Вы можете найти архивную версию из Way Back Machine. Конечно, это нужно делать с зерно соли, поскольку оно не является частью официальной документации больше.