iPhone: Сохраните булевскую переменную в Базовые Данные

Я настроил один из своих базовых атрибутов данных как булевская переменная. Теперь, я должен установить его, но XCode продолжает говорить мне, что это не может ответить на setUseGPS.

[ride setUseGPS: useGPS.on];

Каков метод для установки булевской переменной в базовых данных? Все мои другие атрибуты установлены этот путь, и они работают отлично. Так, не уверенный, почему булевская переменная не работает, чтобы быть установленной этот путь?

53
задан Nic Hubbard 29 May 2010 в 21:15
поделиться

2 ответа

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;
133
ответ дан 7 November 2019 в 08:21
поделиться

«Исправление» для этого (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"];
}
0
ответ дан 7 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: