我正在尝试实现NSCoder,但目前正面临一个棘手的问题。我的目标是通过NSCoder将字符串数组保存到本地文件,并在下次应用程序打开时加载它。
下面是我创建的类,但我不确定如何处理init和编码器函数:
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的路径?还不够清楚。
期待有任何建议。
谢谢。
发布于 2015-09-11 15:09:50
下面是一个将对象保存到/tmp目录的实现和游乐场示例。init(coder:)函数覆盖NSObject,required也是,而且由于它不是指定的初始化器,所以必须将其标记为convenience。另外,由于init(coder:)是一个方便的初始化器,所以不能调用super.init()。
要直接回答有关归档数组的问题,只需键入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")
}
}

https://stackoverflow.com/questions/32525702
复制相似问题