Ich benutze +[NSUserDefaults standardUserDefaults]
zum Speichern von Anwendungseinstellungen. Dies besteht aus ungefähr einem Dutzend Zeichenfolgenwerten. Ist es möglich, diese Werte dauerhaft zu löschen, anstatt sie nur auf einen Standardwert zu setzen?
ios
objective-c
cocoa-touch
nsuserdefaults
TonyNeallon
quelle
quelle
Antworten:
Sie können die persistente Domäne der Anwendung folgendermaßen entfernen:
In Swift 3 und höher:
Dies ähnelt der Antwort von @samvermette, ist aber IMO ein bisschen sauberer.
quelle
Dieser Code setzt die Standardeinstellungen auf die Registrierungsdomäne zurück:
Mit anderen Worten, es
removeObjectForKey
für jeden einzelnen Schlüssel, den Sie jemals in dieser App registriert haben.Dank an Ken Thomases in diesem Thread des Apple Developer Forums .
quelle
[NSUserDefaults resetStandardUserDefaults]
das nicht so ist, ist mir ein Rätsel.Haben Sie versucht, - zu verwenden
removeObjectForKey
?quelle
Hier ist die Antwort in Swift:
quelle
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)
Einzeilerif let domainName = NSBundle.mainBundle().bundleIdentifier { NSUserDefaults.standardUserDefaults().removePersistentDomainForName(domainName) }
UserDefaults.standard.removePersistentDomain(forName: Bundle.main.bundleIdentifier!)
Wenn Sie es während der Entwicklung benötigen, können Sie auch Ihren Simulator zurücksetzen und alle löschen
NSUserDefaults
.iOS Simulator -> Inhalt und Einstellungen zurücksetzen ...
Beachten Sie, dass auch alle Apps und Dateien im Simulator gelöscht werden.
quelle
quelle
In Swift:
quelle
Hinweis: Diese Antwort wurde auch für Swift aktualisiert.
Was ist mit einer Zeile?
Erweitern der Antwort von @Christopher Rogers - die akzeptierte.
und ja, irgendwann müssen Sie es vielleicht brauchen
synchronize
,Ich habe eine Methode dafür erstellt,
Schnell ?
Mit Swift ist es noch einfacher.
Und Verwendung :
quelle
Ich liebe Erweiterungen, wenn sie den Code sauberer machen:
Swift 5
quelle
Ich habe das gefunden:
Quelle: https://gist.github.com/ZevEisenberg/5a172662cb576872d1ab
quelle
Alle oben genannten Antworten sind sehr relevant. Wenn jedoch jemand die Benutzerstandards für die gelöschte App immer noch nicht zurücksetzen kann, können Sie die Inhaltseinstellungen Ihres Simulators zurücksetzen, und es funktioniert.
quelle
Es ist ein Fehler oder was auch immer, aber das
removePersistentDomainForName
funktioniert nicht, während alleNSUserDefaults
Werte gelöscht werden.Die bessere Option ist also, das zurückzusetzen
PersistentDomain
und dies auf folgende Weise zu tun:quelle
Die Antwort von @ folse erweitern ... Ich glaube, eine korrektere Implementierung wäre ...
... Aufruf der persistentDomainForName: -Methode von NSUserDefault. Wie in den Dokumenten angegeben, gibt die Methode "Ein Wörterbuch zurück, das die Schlüssel und Werte in der angegebenen persistenten Domäne enthält". Wenn Sie dictionaryRepresentation aufrufen, wird stattdessen ein Wörterbuch zurückgegeben, das wahrscheinlich andere Einstellungen enthält, da es für einen größeren Bereich gilt.
Wenn Sie einen der zurückzusetzenden Werte herausfiltern müssen, können Sie dies über die Schlüssel wiederholen. Wenn Sie einfach alle Einstellungen für die App ohne Rücksicht auf Nuklearwaffen ändern möchten, ist eine der anderen oben beschriebenen Methoden die effizienteste.
quelle
Wenn die Anwendungseinstellung, die zurückgesetzt werden muss, nsuserdefault für den Zugriff auf das Mikrofon ist (mein Fall), ist eine einfache Lösung die Antwort von Anthony McCormick ( Iphone - So aktivieren Sie den Anwendungszugriff auf Medien auf dem Gerät? - ALAssetsLibraryErrorDomain Code = -3312 "Global verweigerter Zugriff" ).
Gehen Sie auf dem Gerät zu Einstellungen> Allgemein> Zurücksetzen> Standortwarnungen zurücksetzen
quelle
Versuchen Sie dies, es funktioniert für mich.
Einzelne Codezeile
quelle