2016-04-22 14 views
0

Я получаю исключение [NSNull rangeOfCharacterFromSet:]: при попытке отобразить метку. Ошибка читаетКак бороться с NSNull в моих данных?

'NSInvalidArgumentException', причина: «- [длина NSNull]:

Ниже мой код.

UILabel* spousename = [[UILabel alloc] initWithFrame:CGRectMake(10,line, 300,20)]; 

[spousename setText:[_thisburial objectForKey:@"Spouse"]]; 

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

if(![spousename isEqual:nil]) 
{ 
    [self.view addSubview:spousename]; 
} 

Так как же я могу проверить для NSNull в метке, так что я могу предотвратить попадание этого сообщения об ошибке [NSNull rangeOfCharacterFromSet:]:?

ответ

1

Ваши данные фактически не имеют реальной стоимости для «супруга», и это было указано путем хранения экземпляра NSNull в качестве значения. Вам нужно проверить это.

Эта линия:

[spousename setText:[_thisburial objectForKey:@"Spouse"]]; 

Должен быть обновлен, чтобы проверить значение. Что-то вроде этого:

id spouse = _thisburial[@"Spouse"]; 
if ([spouse isKindOfClass:[NSString class]]) { 
    spousename.text = spouse; 
} else { 
    // The "spouse" value wasn't set or it's not a string 
    spousename.text = @""; // Set to whatever you want here 
} 
0

[_thisburial objectForKey:@"Spouse"] возвращается в NSNull. Для этого нужна специальная передача.

NSString *spouseString = [_thisburial objectForKey:@"Spouse"]; 
if (spouseString == (id)[NSNull null]) { 
    spouseString = @""; 
} 

[spousename setText:spouseString]; 
+0

Благодарим за предложение. Мне пришлось использовать if ([spouseString isEqual: [NSNull null]]), и это сработало. – Dave

+0

Извините! Ошибка spouseString == [NSNull null] не работает! Он не признал нуль. – Dave

+0

Я снова проверил ваше предложение, используя f ([spouseString.text isEqual: [NSNull null]]), и это тоже сработало. Основная проблема заключалась в том, что я не использовал суффикс текста для переменной. – Dave