2016-04-22 7 views
0

Ich bekomme eine [NSNull rangeOfCharacterFromSet:]: Ausnahme beim Versuch, ein Etikett anzuzeigen. Der Fehler liestWie behandelt man NSNull in meinen Daten?

'NSInvalidArgumentException', Grund: ‚- [NSNull Länge]:

Unten ist mein Code.

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

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

Ich habe versucht, für ein Null-Zeichen mit dem folgenden Code zu testen, aber dass der Fehler nicht fangen. Es explodierte beim Versuch, die addSuview-Anweisung auszuführen.

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

Wie teste ich für NSNull in einem Etikett, so kann ich vermeiden, dass diese [NSNull rangeOfCharacterFromSet:]: Fehlermeldung?

Antwort

1

Ihre Daten haben keinen tatsächlichen Wert für "Ehegatte" und dies wurde durch Speichern einer Instanz von als Wert angezeigt. Sie müssen dies überprüfen.

Diese Zeile:

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

soll aktualisiert werden, um den Wert zu überprüfen. Etwas wie folgt aus:

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"] kehrt ein NSNull. Dafür muss eine spezielle Handhabe gegeben werden.

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

[spousename setText:spouseString]; 
+0

Danke für den Vorschlag. Ich musste verwenden, wenn ([gatewayString isEqual: [NSNull null]]) und das funktionierte. – Dave

+0

Entschuldigung! Der gatetextString == [NSNull null] hat nicht funktioniert! Es hat die Null nicht erkannt. – Dave

+0

Ich testete Ihren Vorschlag erneut mit f ([gateynString.text isEqual: [NSNull null]]) und das hat auch funktioniert. Das Schlüsselproblem war, dass ich das Text-Suffix nicht für die Variable verwendete. – Dave