[英]Coding array with NSCoder Swift
我正在尝试实现NSCoder,但目前面临一个顽固的问题。 我的目标是通过NSCoder将字符串数组保存到本地文件,并在下次打开应用程序时加载它。
这是我创建的类,但是我不确定如何处理init和encoder函数:
class MyObject: NSObject, NSCoding {
var storyPoints: [String] = []
init(storyPoints : [String]) {
self.storePoints = storePoints
}
required init(coder decoder: NSCoder) {
super.init()
???
}
func encodeWithCoder(coder: NSCoder) {
???
}
}
此外,如何在视图控制器中访问它? 我应该在哪里声明保存NSCoder的路径? 还不够清楚。
期待任何建议。
谢谢。
这是将对象保存到/ tmp目录的实现和游乐场示例。 init(coder:)
函数将覆盖NSObject的功能,因此这是required
并且由于它不是指定的初始化程序,因此必须将其标记为convenience
。 另外,因为init(coder:)
是便捷的初始化程序,所以它无法调用super.init()
。
要直接回答有关归档数组的问题,只需将类型从decoderObjectForKey(_:)
为decoderObjectForKey(_:)
类型。 检查NSCoding文档以获取信息和API进行编码/解码。 那里有很多东西。
import Cocoa
class MyObject: NSObject, NSCoding {
var storyPoints: [String] = []
init(storyPoints : [String]) {
self.storyPoints = storyPoints
}
convenience required init(coder decoder: NSCoder) {
let storyPoints = decoder.decodeObjectForKey("storypoints") as! [String]
self.init(storyPoints: storyPoints)
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(storyPoints, forKey: "storypoints")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.