Из моего понимания Core Data все, что необходимо для работы примитивных средств доступа, - это директива @dynamic для имени свойства (а также объявление примитивных средств доступа для этого свойства в реализации сущности).
По какой-то причине при использовании сгенерированного примитивного метода доступа метод setState: не изменяет свойство состояния:
- (int)state
{
NSNumber * tmpValue;
[self willAccessValueForKey:@"state"];
tmpValue = [self primitiveState];
[self didAccessValueForKey:@"state"];
return [tmpValue intValue];
}
- (void)setState:(int)value
{
[self willChangeValueForKey:@"state"];
[self setPrimitiveState:[NSNumber numberWithInt:value]];
[self didChangeValueForKey:@"state"];
}
при использовании версии кодирования значения ключа делает изменить свойство состояния
- (int)state
{
NSNumber * tmpValue;
[self willAccessValueForKey:@"state"];
tmpValue = [self primitiveValueForKey:@"state"];
[self didAccessValueForKey:@"state"];
return [tmpValue intValue];
}
- (void)setState:(int)value
{
[self willChangeValueForKey:@"state"];
[self setPrimitiveValue:[NSNumber numberWithInt:value] forKey:@"state"];
[self didChangeValueForKey:@"state"];
}
. В обоих случаях примитивные средства доступа I объявляются следующим образом (и в соответствии с примером и генерацией кода Apple):
@interface Post (CoreDataGeneratedPrimitiveAccessors)
- (NSNumber *)primitiveState;
- (void)setPrimitiveState:(NSNumber *)value;
@end
Я являюсьнемного в недоумении, почему это будет.Любая помощь будет принята с благодарностью!