Estoy usando +[NSUserDefaults standardUserDefaults]
para almacenar la configuración de la aplicación. Esto consiste en aproximadamente una docena de valores de cadena. ¿Es posible eliminar estos valores de forma permanente en lugar de simplemente establecerlos en un valor predeterminado?
ios
objective-c
cocoa-touch
nsuserdefaults
TonyNeallon
fuente
fuente
Respuestas:
Puede eliminar el dominio persistente de la aplicación de esta manera:
En Swift 3 y posterior:
Esto es similar a la respuesta de @samvermette pero es un poco más limpio en mi opinión.
fuente
Este código restablece los valores predeterminados al dominio de registro:
En otras palabras, es
removeObjectForKey
para cada clave que haya registrado en esa aplicación.Créditos a Ken Thomases en este hilo de los foros de desarrolladores de Apple .
fuente
[NSUserDefaults resetStandardUserDefaults]
no hace esto está más allá de mí.¿Intentaste usar -
removeObjectForKey
?fuente
Aquí está la respuesta en Swift:
fuente
NSUserDefaults.standardUserDefaults().removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!)
one-linerif let domainName = NSBundle.mainBundle().bundleIdentifier { NSUserDefaults.standardUserDefaults().removePersistentDomainForName(domainName) }
UserDefaults.standard.removePersistentDomain(forName: Bundle.main.bundleIdentifier!)
Si lo necesita durante el desarrollo, también puede restablecer su simulador, eliminando todo
NSUserDefaults
.Simulador de iOS -> Restablecer contenido y configuración ...
Tenga en cuenta que también eliminará todas las aplicaciones y archivos en el simulador.
fuente
fuente
En Swift:
fuente
Nota: Esta respuesta también se ha actualizado para Swift.
¿Qué hay de tenerlo en una línea?
Ampliando la respuesta de @ Christopher Rogers: la aceptada.
y sí, en algún momento puede necesitarlo
synchronize
,He creado un método para hacer esto,
Swift ?
Con Swift es aún más fácil.
Y uso :
fuente
Me encantan las extensiones cuando hacen que el código sea más limpio:
Swift 5
fuente
Encontré esto:
Fuente: https://gist.github.com/ZevEisenberg/5a172662cb576872d1ab
fuente
Todas las respuestas anteriores son muy relevantes, pero si alguien aún no puede restablecer los valores predeterminados del usuario para la aplicación eliminada, puede restablecer la configuración de contenido de su simulador y funcionará.
fuente
Es un error o lo que sea, pero
removePersistentDomainForName
no funciona mientras se borran todos losNSUserDefaults
valores.Por lo tanto, una mejor opción es restablecer el
PersistentDomain
y que puede hacerlo de la siguiente manera:fuente
Ampliando la respuesta de @ folse ... Creo que una implementación más correcta sería ...
... llamando al método persistentDomainForName de NSUserDefault: método. Como dicen los documentos, el método "Devuelve un diccionario que contiene las claves y los valores en el dominio persistente especificado". Llamar a dictionaryRepresentation: en su lugar, devolverá un diccionario que probablemente incluirá otras configuraciones según se aplique a un alcance más amplio.
Si necesita filtrar alguno de los valores que se van a restablecer, iterar sobre las claves es la forma de hacerlo. Obviamente, si desea eliminar todas las preferencias de la aplicación sin tener en cuenta, entonces uno de los otros métodos publicados anteriormente es el más eficiente.
fuente
si la configuración de la aplicación que necesita restablecerse es nsuserdefault para acceder al micrófono (mi caso), una solución simple es la respuesta de Anthony McCormick ( Iphone - ¿Cómo habilitar el acceso de la aplicación a los medios en el dispositivo? - ALAssetsLibraryErrorDomain Code = -3312 "Acceso global denegado" )
en el dispositivo, vaya a Configuración> General> Restablecer> Restablecer advertencias de ubicación
fuente
Prueba esto, está funcionando para mí.
Sola línea de código
fuente