【发布时间】:2018-01-12 00:04:51
【问题描述】:
我有一组要转换为NSMutableDictionary 的自定义对象,然后用它们创建一个数组(这部分目前正在按预期工作)。
然后我尝试使用NSKeyedArchiver 将该数据数组保存为文件。但是,NSKeyedArchiver.archiveRootObject 的结果总是返回 false。
以下是我保存的逻辑 - 我是否遗漏了一些明显的东西,或者这是错误的方法?谢谢!
var groupsArray = [Any?]()
for group in file!.groups{
for obj in group.children {
let objDict = obj.convertToDictionary()
groupsArray.append(objDict)
}
}
let documents: String = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let filePath: String = URL(fileURLWithPath: documents).appendingPathComponent("file.archive").absoluteString
let save: Bool = NSKeyedArchiver.archiveRootObject(groupsArray, toFile: filePath)
编辑:如果尝试保存到 .desktop 或 .caches 目录,这也会失败。
【问题讨论】:
-
如果将归档步骤和写入步骤一分为二(获取
archivedData(withRootObject:),然后将其写出来),错误发生在哪里?应用是否被沙盒化?
标签: swift macos nsarray nsdictionary nskeyedarchiver