我目前正在嘗試將自定義Swift類保存到NSUserDefaults。下面是我的遊樂場代碼:將具有NSCoding的自定義SWIFT類保存到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")
當我運行代碼,我得到錯誤「的執行被中斷,原因是:信號SIGABRT」在最後一行(ud.setObject ...)
相同的代碼在消息「屬性列表對於格式無效:200(屬性列表不能包含CFType類型的對象)時無效」
任何人都可以幫忙嗎?我在Maverick上使用Xcode 6.0.1。謝謝。
你應該張貼您的工作代碼作爲一個答案,讓自己的一些選票,因爲這裏唯一的答案是鏈路只能回答這被認爲是無答案的堆棧溢出的指導方針。 – 2015-10-27 23:38:41
這裏有一個很好的教程:https://ios8programminginswift.wordpress.com/2014/08/17/persisting-data-with-nsuserdefaults/這裏有一個很好的reddit討論:http://www.reddit.com/r/ swift/comments/28sp3z/whats_the_best_way_to_achieve_persistence_in /另一個好帖子在這裏:http://www.myswiftjourney.me/2014/10/01/simple-persistent-storage-using-nsuserdefaults/對於完整的對象存儲,我建議完整的NSCoding - 兩下面的例子,從我的第二個完整的類結構:http://stackoverflow.com/questions/26233067/simple-persistent-storage-in-swift/26233274#26233274 http:// stackoverfl – 2014-10-20 15:52:56
工作代碼發佈如下。 – Georg 2017-03-16 18:41:35