Я настроил один из своих базовых атрибутов данных как булевская переменная. Теперь, я должен установить его, но XCode продолжает говорить мне, что это не может ответить на setUseGPS.
[ride setUseGPS: useGPS.on];
Каков метод для установки булевской переменной в базовых данных? Все мои другие атрибуты установлены этот путь, и они работают отлично. Так, не уверенный, почему булевская переменная не работает, чтобы быть установленной этот путь?
Core Data "не имеет" типа Boolean (имеет, но это NSNumber).
Поэтому для установки эквивалента useGPS = YES.
[entity setUseGPS:[NSNumber numberWithBool:YES]];
И наоборот:
BOOL isGPSOn = [[entity useGPS] boolValue];
Update: Как указал SKG, с литералами в Objetive-C теперь можно поступить проще:
[entity setUseGPS:@YES];
BOOL isGPSOn = entity.useGPS.boolValue;
«Исправление» для этого (IMHO, это ошибка в SDK Apple) заключается в добавлении следующего кода в ваш класс, созданный CoreData. NB: если вы делаете это в категории, в отдельном файле, вам не нужно повторно копировать / вставлять его каждый раз, когда вы регенерируете классы CoreData внутри Xcode
- (BOOL)useGPS
{
[self willAccessValueForKey:@"useGPS"];
BOOL myuseGPS = [[self primitiveUseGPS] boolValue];
[self didAccessValueForKey:@"useGPS"];
return myuseGPS;
}
- (void)setUseGPS:(BOOL)newValue
{
[self willChangeValueForKey:@"useGPS"];
[self setPrimitiveUseGPS:[NSNumber numberWithBool:newValue]];
[self didChangeValueForKey:@"useGPS"];
}