Нулевое значение от JSON - PullRequest
       4

Нулевое значение от JSON

0 голосов
/ 09 декабря 2011

У меня проблемы с нулевым значением, которые анализируются в JSON.Поскольку я связываю сущность с UILabel, когда он видит нулевой тип, приложение вылетает.Есть ли хороший подход для отображения нулевого значения в представлении, чем проверка на нулевое значение в каждом наборе связей?

Спасибо

Ответы [ 4 ]

3 голосов
/ 09 декабря 2011

Класс NSNull предназначен для подобных ситуаций. Он используется в коллекциях, где значение null (0x0) недопустимо (NSArray, NSDictionary и т. Д.)

Использование его аналогично следующему:

id myValue = // get value from collection

// method one (recommended, as you could have more than one instance of NSNull)
if ([myValue isKindOfClass:[NSNull class])
{
    // null value
}

// method two, not recommended
if (myValue == [NSNull null])
{
    // null value
}
2 голосов
/ 09 декабря 2011
if (objectHoldingJsonValue == [NSNull null]) {
   // you have a null value, move in other value
}
0 голосов
/ 01 марта 2012

Самый простой способ для получения корневых значений NULL из словаря JSON. Работает с NSDictionary, не должен быть изменяемым:

[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    if ([obj isKindOfClass:[NSNull class]]) [dictionary setValue:[NSString stringWithString:@""] forKey:key];
} ];
0 голосов
/ 10 декабря 2011

Если вы хотите избежать обхода коллекций в объектах JSON, вы можете создать подкласс UILabel и переопределить установщик для свойства "text", проверив значение по нему как NULL (например, используя подход Ричарда):

- (void) setText:(NSString *)textValue
{
    if ([textValue isKindOfClass:[NSNull class]]) textValue = nil;
    [super setText:textValue];           
}

Конечно, такой подход оставляет вас открытыми для любых других ситуаций в вашем приложении, где это значение NULL может вызвать проблемы, поэтому проверка / очистка в контексте вашей модели данных, вероятно, будетбыть предпочтительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...