2016-03-20 4 views
0

Ich habe eine Menge Probleme mit einem Bugg, die in einigen Fällen die "initWithObjects: forKeys: count:]: Versuch, Nil-Objekt von Objekten einzufügen [6] "" Fehlermeldung. Es passiert nur um jeden dritten Versuch und in den anderen Fällen funktioniert es gut. Ich habe Buggs, die in bestimmten Situationen passiert sind, nicht ausgetestet, deshalb bitte ich um Hilfe. Es könnte schwierig sein, eine Lösung zu finden, aber ich würde mich freuen, wenn ich wenigstens einen Rat bekommen könnte, wo ich anfangen soll, nach dem Problem zu suchen und es zu debuggen?Bugg mit NSDictonary stürzt manchmal mit "Versuchen, Null einzufügen" Antwort

Grundsätzlich meine App haben eine Methode, die eine NSDictronic-Liste mit Objekten an einen Server sendet. In einigen Fällen möchte ich ein Objekt entfernen, wenn der Benutzer nichts für diese Liste ausgewählt hat. Problem ist, dass der Server nicht wie ein Objekt mit einem leeren Speicherplatz senden wollte. Also habe ich eine Art nicht schön aussehende Arbeit gemacht. Grundsätzlich prüft die IBaction, ob das Objekt nil enthält. Wenn es nil enthält, wird es zu einem sehr ähnlichen NSDictonary ohne das Objekt, das Nil enthält, umgeleitet. Es funktioniert in einigen Fällen, aber es scheint, als würde es manchmal das Objekt nicht erkennen, das nichts enthält.

Hier ist der Code in Inaction, der den Code umleitet. Ich habe keine Methode zum Einfügen von irgendetwas in das Objekt erstellt: @ "DefaultCreateImageID", aber soweit ich weiß, sollte es immer Null sein.

NSString *Imagestuff= [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"]; 
    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"] != (NSString *) [NSNull null] ){ 
    DataHandler *handler = [DataHandler sharedDatahandler]; 
    handler.authenticateUserDelegate = self; 
    [handler createActivityNoImage]; 
     NSLog(Imagestuff); 
    } 

    else 
    { 
     DataHandler *handler = [DataHandler sharedDatahandler]; 
     handler.authenticateUserDelegate = self; 
     [handler createActivity]; 

    } 

Vielen Dank!

Antwort

0

Wenn Sie die Fehlermeldung "Nil einfügen" erhalten, ist eines der Objekte, die Sie dem Wörterbuch hinzufügen möchten, Null. Lösung: Tu das nicht.

Finden Sie heraus, warum einige Elemente, die Sie dem Wörterbuch hinzufügen möchten, null sind. Dann überlegen Sie, was Sie in der Situation machen wollen.

+0

Nun, ich könnte das Nil leicht durch etwas anderes ersetzen, aber das würde das eigentliche Problem nicht lösen. Meine Methode muss wissen, ob der Benutzer ein Objekt zu diesem Objekt hinzugefügt hat. Wenn das nicht der Fall ist, muss ich dieses Objekt nicht an den Server senden. Problem ist, dass, wenn ich frage, was die Zeichenfolge enthält keine Null scheint es manchmal zu verpassen und stil sendet es an die NSDictonary. Der Fehler wird erstellt, wenn das Objekt mit dem Wert nil gesendet wird. Wenn ich es durch etwas anderes ersetzen würde, dann würde der Server stattdessen wie ein unbeschriebenes Leerzeichen immer noch einen Fehler geben. –

0

Um auf gnashers729 Antwort zu folgen. Das Problem für mich ist nicht Null, sondern die Tatsache, dass meine Inaktivität nicht erkennt, was das Objekt enthält.

Hier zum Beispiel habe ich versucht, Nil durch eine Zeichenfolge zu ersetzen, um zu erkennen. Ich bekomme das gleiche Problem, dass meine Methode in einigen Fällen die Zeichenfolge erkennt und in einigen Fällen nicht.

NSString *Imagestuff= [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"]; 
    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultcreateImageID"] != (NSString *) @"noImage" ){ 
Verwandte Themen