Ich habe dieses seltsame Problem. Ich speichere benutzerdefinierte Klassenobjekt in NSUserDefaults
, und beim Abrufen der Daten erhalte ich nil
für int
Variable des Objekts. Unten ist die benutzerdefinierte KlasseiOS: Die int-Variable des benutzerdefinierten Objekts gibt in NSUserDefaults null zurück
class User {
var name: String?
var user_id: Int?
var account_id: Int?
var location: String?
}
ich als das Objekt bin Speichern
let defaults = NSUserDefaults.standardUserDefaults()
var data = NSKeyedArchiver.archivedDataWithRootObject([user]) // I can see the int values for the user objects here
defaults.setObject(data, forKey: "all_users")
Abrufen der Daten als,
let defaults = NSUserDefaults.standardUserDefaults()
let data = defaults.dataForKey("all_users")
var users = [Users]()
if data != nil {
let userData = NSKeyedUnarchiver.unarchiveObjectWithData(data!) as! [Users]
for usr in userData {
print("\(usr.name!)") // Prints the name
print("\(usr.user_id!)") // Nil value here
users.append(usr)
}
}
Ich habe absolut keine Ahnung von den Grund für dieses Verhalten .
Ihre Klasse 'NSCoding' entsprechen muss – dan
Möglicherweise müssen Sie Ihre eigene schreiben' Archiver ". http://stackoverflow.com/questions/2315948/how-to-store-custom-objects-in-nsuserdefaults – Putz1103
@ Putz1103 Ich habe diese Lösung schon gesehen aber nicht versucht, bis Sie darauf hingewiesen haben. Es funktioniert. Vielen Dank! –