2016-08-19 1 views
1

Wenn ich diese Funktion aufrufen, stürzt meine App ab.
Ich habe diesen Fehler: [__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1].
Wie ich es lösen kann bitte helfen, wenn Sie wissen.App beim Absturz während der NSUserDefault-Datenbereinigung

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
     NSDictionary *dict = [defs dictionaryRepresentation]; 
     for (id key in dict) 
     { 
      NSObject * object = [dict objectForKey:key]; 
      if(object != nil) 
      { 
       [defs removeObjectForKey:key]; 
       [defs synchronize]; 
      } 
     } 
+0

was Sie versuchen, deaktivieren Sie alle Benutzer standardmäßig? dann NSString * appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName: appDomain]; –

+0

leider mike ich versuche, Ihren Vorschlag, aber es funktioniert nicht, App bekommen creash –

+0

[__NSPlaceholderDictionary initWithObjects: forKeys: count:]: Versuch von Objekten Null-Objekt einfügen [1] –

Antwort

2

Bitte folgenden Code verwenden. Es sollte Ihnen helfen,

NSString *applicationDomain = [[NSBundle mainBundle] bundleIdentifier]; 

[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:applicationDomain]; 

Sie auch

NSDictionary *defaultsDictionary = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; 
    for (NSString *key in [defaultsDictionary allKeys]) { 
         [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; 
    } 

[[NSUserDefaults standardUserDefaults] synchronize]; //outside loop. 

HINWEIS verwenden können: Der Absturz, die Sie erwähnen, ist in Bezug auf setValue forKey in einem Wörterbuch. Bitte geben Sie den Haltepunkt an und sehen Sie, wo Sie keinen Wert im Dictionary einfügen.

+0

Ich versuche diesen Code nicht funktioniert für mich meine App stürzt ab –

+0

[__NSPlaceholderDictionary initWithObjects: forKeys: count:]: versuchen, Objekt aus Objekten einfügen [1] –

+0

gibt es NSString, Bool, Nsdata speichern in Nsuserdefault –

0

try die Schlüssel der gewünschten Einträge in NSArray innerhalb der Schleife Zugabe dann tun removeObjectsForKeys: Array außerhalb der Schleife

Es ist vorzuziehen Einträge nicht entfernt werden, während für die Schleife in ein Aufzählen

0

Meine Lösung für Ihre Frage ist

NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; 
NSDictionary *dict = [userDefaults dictionaryRepresentation]; 
for (id key in dict) { 
    [dict removeObjectForKey:key]; 
} 
[defs synchronize]; 
+0

Danke, dass du diesen Bruder übrig hast. Ich habe diese Zeile entfernt. Sieh meine Antwort. – user3182143

Verwandte Themen