Ich versuche derzeit, eine benutzerdefinierte Swift-Klasse zu NSUserDefaults zu speichern. Hier ist der Code von meinem Spielplatz:Speichern benutzerdefinierter SWIFT-Klasse mit NSCoding zu UserDefaults
import Foundation
class Blog : NSObject, NSCoding {
var blogName: String?
override init() {}
required init(coder aDecoder: NSCoder) {
if let blogName = aDecoder.decodeObjectForKey("blogName") as? String {
self.blogName = blogName
}
}
func encodeWithCoder(aCoder: NSCoder) {
if let blogName = self.blogName {
aCoder.encodeObject(blogName, forKey: "blogName")
}
}
}
var blog = Blog()
blog.blogName = "My Blog"
let ud = NSUserDefaults.standardUserDefaults()
ud.setObject(blog, forKey: "blog")
Wenn ich den Code ausführen, erhalte ich die Fehlermeldung „Die Ausführung unterbrochen wurde, Grund:. Signal SIGABRT“ in der letzten Zeile (ud.setObject ...)
Der gleiche Code stürzt auch in einer App mit der Meldung "Eigenschaftsliste für Format ungültig: 200 (Eigenschaftslisten können keine Objekte vom Typ 'CFType' enthalten)"
Kann jemand helfen? Ich verwende Xcode 6.0.1 auf Maverick. Vielen Dank.
sollten Sie Ihren Arbeits Code als Antwort posten, erhalten Sie sich Stimmen einige auf, da die einzige Antwort, hier ist ein Link-only Antwort, die eine Nicht-Antwort von Stack-Überlauf-Richtlinien berücksichtigt wird. –
Es gibt ein gutes Tutorial hier: https://ios8programminginswift.wordpress.com/2014/08/17/persisting-data-with-nsuserdefaults/ Eine gute reddit Diskussion hier: http://www.reddit.com/r/ swift/comments/28sp3z/whats_the_best_way_to_achieve_persistence_in/Noch ein guter Beitrag hier: http://www.myswiftjourney.me/2014/10/01/simple-persistent-storage-using-nsuserdefaults/ Zum vollständigen Objekt speichern empfehle ich die vollständige NSCoding - zwei Beispiel unten, das zweite von mir mit vollen Klassenstrukturen: http://stackoverflow.com/questions/26233067/simple-persistent-storage-in-swift/26233274#26233274 http: // stackoverfl –
Arbeitscode unten veröffentlicht. – Georg