BOOL-значения не распознаются в объектах CoreData - PullRequest
0 голосов
/ 01 февраля 2012

Я столкнулся со странной проблемой, связанной с CoreData и логическими значениями: в моей модели данных я установил для свойства объекта значение BOOL.Позже я установлю theEntity.theBooleanValue = [NSNumber numberWithBool:NO] и сохраню объект.Пока все хорошо, но когда я пытаюсь проверить значение сохраненного свойства с помощью if ([theObject valueForKey:@"theBooleanValue"] == [NSNumber numberBOOL:NO]){//do something}, оно никогда не переходит в условие if.Но если я проверяю == [NSNumber numberWithInt:0], работает ли он ... так что в основном я пытаюсь сохранить bool, но он распознается как int ... Есть идеи, что там происходит?

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Для меня имеет смысл рассмотреть [[theObject valueForKey:@"theBooleanValue"] boolValue].т.е.

if(![[theObject valueForKey:@"theBooleanValue"] boolValue])
{
    // Your code
}

Я думаю, что оператор == сравнивает указатель объекта, а не само число.Для сравнения числа есть отдельный метод [NSNumber isEqualToNumber:].

2 голосов
/ 03 февраля 2012

Обратите внимание, это сделает вашу жизнь намного проще, если вы объявите свойства как

@property (nonatomic) BOOL theBooleanValue;

Это позволит вам использовать

if (!theObject.theBooleanValue) {
    // Your code here
}

И вы можете назначить напрямую с помощью

theObject.theBooleanValue = YES;
...