Я искал ответ на этот вопрос, но я не мог найти его, у подобных нет ответа вообще. В принципе, я хочу сохранить данные с помощью NSKeyedUnarchiver.archiveRootObject() и загрузить его с помощью .unarchiveObject (withFile). Он отлично работал с Swift 2.3, теперь он падает, заявляя, что разделяющая часть всегда возвращается назад. Я также проверяю файл, если он существует, и он делает это. Я действительно не знаю, что происходит. Это процедура загрузки:NSKeyedArchiver.unarchiveObject Swift 3 iOS 10
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 []
}
}
и это экономия:
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")
}
}
}
, но в конце концов, я всегда получаю «неустранимая ошибка: неожиданно нашли ноль в то время как разворачивание необязательное значение»