¿Son equivalentes las siguientes dos líneas?
1.
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"example key"]
2.
[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"example key"]
nsuserdefaults
ma11hew28
fuente
fuente

Respuestas:
Swift 3.0
La respuesta a continuación ya no es el caso cuando probé esto. Cuando se establece en
nilel resultado, se almacena NSCFData. Posiblemente una referencia de objeto NSNull, pero no estoy seguro.Para eliminar completamente un valor para el uso de una clave
UserDefaults.standard.removeObject(forKey: "YourDefault")Probé con el siguiente código:
fuente
Sí, ambas líneas de código son equivalentes, ambas resultarán en lectura nula
NSUserDefaultsdevolverá nil si no se encontró la clave. Recomendaría usar el enremoveObjectForKeylugar de establecerlo en cero.aquí se explica cómo probar si establecer el valor de la clave en cero eliminó la entrada de la clave
NSUserDefaults standardUserDefaults.o simplemente volcar el diccionario clave / valor de
NSUserDefaults standardUserDefaultsfuente
removeObjectForKey?setObject:niltambién eliminará el objeto, no solo su clave. Entonces, ambas funciones causan exactamente el mismo resultado. Además, si elimina (o establece en cero) el único objeto almacenado (y clave), se elimina todo el archivo .plist.Swift 5.0 + iOS 11 y posteriores
Ambos métodos eliminan el valor. Probé esto en un patio de recreo:
Antes de IOS 11 este se traducirá en la serialización
nilenDatay lanzar un error.fuente