且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

尝试在Swift 3中保存自定义对象时尝试插入非属性列表对象

更新时间:2023-10-19 13:34:58

你需要创建数据实例使用 JobCategory 实例code> NSKeyedArchiver.archivedData(withRootObject :) 并将 Data 实例存储在 UserDefaults 以后使用 NSKeyedUnarchiver.unarchiveObject取消归档(使用:) ,请尝试这样。

You need to create Data instance from your JobCategory instance using NSKeyedArchiver.archivedData(withRootObject:) and store that Data instance in UserDefaults and later unarchive using NSKeyedUnarchiver.unarchiveObject(with:), So try like this.

用于存储中的数据UserDefaults

For Storing data in UserDefaults

let category = JobCategory(id: 1, name: "Test Category", URLString: "http://www.example-job.com")
let encodedData = NSKeyedArchiver.archivedData(withRootObject: category)
let userDefaults = UserDefaults.standard
userDefaults.set(encodedData, forKey: UserDefaultsKeys.jobCategory.rawValue)

用于从 UserDefaults

For retrieving data from UserDefaults

let decoded  = UserDefaults.standard.object(forKey: UserDefaultsKeys.jobCategory.rawValue) as! Data
let decodedTeams = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! JobCategory
print(decodedTeams.name)