2016-07-14 19 views
1

Wenn Speichern von Werten in NSUserDefaults verhindern:Wie Protokollmeldung „Überspringen Einstellung bereits vorhandenen Wert für Schlüssel“

[[NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"]; 

..., wenn der Wert vorlag, wurde bereits, Xcode 8 protokolliert:

2016-07-14 09: 59: 04.081806 MyAppName [52232: 2561291] [Benutzervorgaben] CFPrefsPlistSource < 0x7941d950> (Domäne: com.myAppBundle, Benutzer: kCFPreferencesCurrentUser, ByHost: Nein, Container: (null)) Einstellung bereits überspringen- aktueller Wert für Schlüssel myKey

1) Kann ich Xcode bitten, dies nicht zu protokollieren?

2) Oder sollte ich die Gleichheit der zuvor gespeicherten Werte vergleichen, bevor Sie setValue:forKey: verwenden? [Tochtergesellschaft Frage]

Beispiel:

if (![[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"] isEqual:myValue]) 
    [NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"]; 

3) oder sollte ich dies durchzuführen mit einem Gewinde sichere Verriegelung Vergleichen zweimal den gleichen Wert zwischen der Anweisung zu vermeiden Speichern, wo ich vergleichen und die Anweisung, Ich benutze setValue:forKey:? [Tochtergesellschaft Frage]

Beispiel:

@synchronized ([NSUserDefaults standardUserDefaults]) { 
    if (![[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"] isEqual:myValue]) 
     [NSUserDefaults standardUserDefaults] setValue:myValue forKey:@"myKey"]; 
} 

Antwort

0

Ausgabe war mit Beta 1 und Beta 2 nur. Feste mit Xcode 8 Beta 3:

Wenn Anwendungen im Simulator Debugging, das Betriebssystem nicht eine übermäßige Menge an nicht hilfreich Protokollierung produzieren. (26652255)

Auch können weitere Protokollierung durch Bearbeiten jedes Schema entfernt werden, und das Hinzufügen einer spezifischen Umgebungsvariable, OS_ACTIVITY_MODE zu disable: OS_ACTIVITY_MODE disable