【发布时间】:2014-12-15 15:50:39
【问题描述】:
我目前正在尝试将自定义 Swift 类保存到 NSUserDefaults。这是我的 Playground 中的代码:
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。谢谢。
【问题讨论】:
-
这里有一个很好的教程:ios8programminginswift.wordpress.com/2014/08/17/… 一个很好的 reddit 讨论:reddit.com/r/swift/comments/28sp3z/… 另一个很好的帖子:myswiftjourney.me/2014/10/01/… 对于完整的对象存储,我推荐完整的 NSCoding - 下面两个示例,我的第二个完整的班级结构:stackoverflow.com/questions/26233067/…stackoverfl
标签: swift nsuserdefaults sigabrt nscoding