2013-05-14 1 views
0

У меня есть служба webservice, которая возвращает строку 0 для поля, которое мне нужно вызвать driveThru, чтобы определить, имеет ли место диск через сервис или нет.Как управлять NSString как BOOL в iOS Core Data?

Я принимаю это «0» и сохраняю его как строку в моем базовом db базы данных только потому, что его проще хранить строки.

Итак, теперь я хочу контроллер вида с свойством BOOL, называемым self.driveThru, который установлен в true или false в зависимости от того, использовал ли пользователь ядро ​​или нет, чтобы создать предикат для выборки db.

NSPredicate *predicate = [NSPredicate 
            predicateWithFormat:@"(driveThru == %@)", 
            self.driveThru]; 

Нужно ли преобразовать этот self.driveThru (BOOL) в число или строку?

ответ

0

Я думаю, вы могли бы просто заменить тип этого имущества как NSNumber. Это будет более четкий подход. Или вы можете просто создать свою собственную функцию карты, которая отображает строки «0» или «1» в bools и наоборот.

Если вы следуете первому, когда вы извлекаете строковое значение с сервера, просто вставьте его в число, подобное следующему.

BOOL boolVal = [yourServerString boolValue]; 
NSNumber* numberValue = [NSNumber numberWithBool:boolVal]; 

Когда вы используете его захватить boolValue как это.

BOOL boolValue = [numberValue boolValue]; 

Ваш предикат будет выглядеть следующим образом.

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"driveThru == %@", 
            [NSNumber numberWithBool:[self driveThru]]]; 

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

Смежные вопросы