2014-11-06 2 views
0

В моем последнем приложении я получаю JSON и вам нужно проверить, является ли строка objet фактическим значением bool или обычной строкой.Проверьте, имеет ли NSString отрицательное значение bool

Я знаю Класс NSString имеет метод boolValue. Однако это метод возвращает NO, если он основан на отрицательном значении bool или действительном значении bool.

Однако мне нужно иметь разные поведения в моем приложении, если строка действительно является значением bool или обычной строкой, потому что JSON может иметь оба сценария.

Любая идея, как я могу это достичь?

+0

Итак, в основном вы хотите знать, является ли строка «1» или «0», «истина» или «ложь» или «да» или «нет»? –

+0

Да, в основном. Но я хотел проверить, могу ли я избежать «цикла проверки» для проверки содержимого вместо типа объекта. – DaSilva

ответ

1

A BOOL от JSON на самом деле будет обернут в NSNumber, поэтому это так же просто, как проверить класс объекта.

if ([object isKindOfClass:[NSNumber class]]) { 
    BOOL value = [object boolValue]; 
} 
+0

Это, конечно, предполагается, что вы уже прошли это через 'NSJSONSerialization'. – ravron

+0

Простой и понятный !!! Большое спасибо @jshier – DaSilva

2

Вы можете просто создать категорию NSString и добавить метод isJSONBoolean

@implementation NSString (JSONBoolean) 

-(BOOL) isJSONBoolean 
{ 
    return [self isEqualToString:@"false"] || [self isEqualToString:@"true"] 
    || [self isEqualToString:@"NO"] || [self isEqualToString:@"YES"] 
    || [self isEqualToString:@"0"] || [self isEqualToString:@"1"]; 
} 

@end 

вы можете изменить его в соответствии со значениями, которые необходимо проверить.

+0

Ваше решение будет работать, но я предпочитаю проверять объект вместо содержимого. У меня более четкое решение. Спасибо – DaSilva

+1

Это решение больше подходит для, к сожалению, слишком распространенного сценария, где бэкэнд на самом деле не обеспечивает логическое выражение в ответе, но строковое кодирование какого-то булевского представления. –

+1

Прочитав ваш вопрос, я обнаружил, что у вас был объект NSString после повторной инициализации вашего JSON. – Imotep

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