使用plist存入本地缓存
- 类要遵守协议NSCoding
class MyClass: NSCoding {
var name = "张三"
var age = 8
}
- 获取路径
private func getFileURL() -> URL? {
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
return nil
}
let fileURL = documentsDirectory.appendingPathComponent("MyTempData.plist")
return fileURL
}
- 存入数据方法
let array = [MyClass]()
// ... 添加array元素
guard let fileURL = getFileURL() else {
return
}
do {
let archivedData = try NSKeyedArchiver.archivedData(withRootObject: array, requiringSecureCoding: false)
try archivedData.write(to: fileURL)
} catch {
print("Error: \(error)")
}
- 读取数据方法
let res = [MyClass]()
guard let fileURL = getFileURL() else {
return res
}
do {
let data = try Data(contentsOf: fileURL)
if let unarchivedArray = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [MyClass] {
print("解析数据成功")
res = unarchivedArray
}
} catch {
// 处理错误
print("解析数据Error: \(error)")
}
return res
版权声明:本文为JH_Cao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。