我一直在寻找这个问题的答案,但我找不到,类似的答案根本没有答案.基本上,我想使用NSKeyedUnarchiver.archiveRootObject()保存数据并使用.unarchiveObject(withFile)加载它.它与Swift 2.3一起工作正常,现在崩溃说unarchive部分总是回来零.我也检查文件是否存在,确实存在.我真的不知道发生了什么.这是加载程序:
func loadnotifs(_ username:String)->[AFNotificationData]{
let ArchiveURL = Constants.DocumentsDirectory.appendingPathComponent(username)
print("loading " + ArchiveURL.path)
if FileManager.default.fileExists(atPath: ArchiveURL.path) {
let unarchived = NSKeyedUnarchiver.unarchiveObject(withFile: ArchiveURL.path) as? [AFNotificationData]
if unarchived != nil {
return NSKeyedUnarchiver.unarchiveObject(withFile: ArchiveURL.path) as! [AFNotificationData]
} else {
return []
}
}
else {
return []
}
}
Run Code Online (Sandbox Code Playgroud)
这是节约:
func savenotifs(_ username:String){
if username != "" {
let ArchiveURL = Constants.DocumentsDirectory.appendingPathComponent(username)
print("saving " + ArchiveURL.path)
}
let isSuccessfulSave = NSKeyedArchiver.archiveRootObject(AFDatabase.sharedDatabase.notificationList, toFile: ArchiveURL.path)
if !isSuccessfulSave {
print("Failed to save notifs")
}
} …Run Code Online (Sandbox Code Playgroud)