我目前正在尝试将自定义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