当前位置:网站首页>Swift uses userdefaults and codable to save an array of class objects or structure instances
Swift uses userdefaults and codable to save an array of class objects or structure instances
2022-07-05 10:10:00 【cppphp】
swift use UserDefaults And Codable Save an array of class objects or structure instances
I wrote an article before 《swift use UserDefaults And NSSecureCoding Save an array of class objects 》 The article , Although it can save class and structure arrays , But in actual use, each class or structure to be saved should be encoded and decoded , There is also more code when saving and reading , It is complicated to use , Especially when saving and reading arrays are frequent .
This article uses swift4.0 Agreement brought by Codable To solve the problems mentioned above .
Codable It is based on the basic agreement Encodable,Decodable,CodingKey Above . The specific content will not be expanded . In this article, its use is very simple , Just inherit the protocol when defining classes and structures . The code is as follows :
struct Item: Codable {
var uuid: UUID
var inAction: Int
var outAction: Int
var useful: Bool
}
Just follow the above definition , Don't ask 《swift use UserDefaults And NSSecureCoding Save an array of class objects 》 Then write the coding and decoding code as in , Is it simple .
To further simplify the code , Easy to use , Yes UserDefaults Expand as follows
extension UserDefaults {
// Save the class array
func set<T:Encodable>(classArrory object: [T], key: String) {
do {
let data = try JSONEncoder().encode(object)
self.set(data, forKey: key)
} catch {
print(error)
}
}
// Read the class array
func classArrory<T:Decodable>(forKey key : String) -> [T] {
guard let data = self.data(forKey: key) else { return [] }
do {
return try JSONDecoder().decode([T].self, from: data)
} catch {
print(error)
}
return []
}
}
In the above code , function set The main function is to encode and save the structure array , function classArrory Its main function is to read structural data and decode , Template parameters are used in both functions T, To specify different classes and structures . There is nothing else to say , Very simple, at a glance .
The foundation has been laid , Let's see how to use it
let ud = UserDefaults.standard
let item1 = Item(uuid: "00000023-0000-1000-8000-0026BB765291", inAction: 0, outAction: 1, useful: true)
let item2 = Item(uuid: "0000003E-0000-1000-8000-0026BB765475", inAction: 1, outAction: 1, useful: true)
var items = [item1, item2]
// Save the class array
ud.set(classArrory: items, key: "homekits")
...
// Read the class array
items = ud.classArrory(forKey: "homekits")
After defining the array , Write... In one line , One line readout , Is it simple ?
Related blogs
《swift use UserDefaults And NSSecureCoding Save an array of class objects 》
边栏推荐
- Officially launched! Tdengine plug-in enters the official website of grafana
- Kotlin compose and native nesting
- Cross process communication Aidl
- Unity particle special effects series - the poison spray preform is ready, and the unitypackage package can be used directly - next
- Windows uses commands to run kotlin
- Node-RED系列(二九):使用slider与chart节点来实现双折线时间序列图
- 【OpenCV 例程200篇】219. 添加数字水印(盲水印)
- 把欧拉的创新带向世界 SUSE 要做那个引路人
- Apache dolphin scheduler system architecture design
- Common fault analysis and Countermeasures of using MySQL in go language
猜你喜欢
[NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
Unity particle special effects series - the poison spray preform is ready, and the unitypackage package is directly used - on
[NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
Oracle combines multiple rows of data into one row of data
How to choose the right chain management software?
Develop and implement movie recommendation applet based on wechat cloud
Roll up, break 35 - year - old Anxiety, animation Demonstration CPU recording Function call Process
【小技巧】获取matlab中cdfplot函数的x轴,y轴的数值
Six simple cases of QT
Pagoda panel MySQL cannot be started
随机推荐
TDengine ×英特尔边缘洞见软件包 加速传统行业的数字化转型
Baidu app's continuous integration practice based on pipeline as code
Tutorial on building a framework for middle office business system
Coffeescript Chinese character to pinyin code
ArcGIS Pro creating features
Node red series (29): use slider and chart nodes to realize double broken line time series diagram
Tdengine can read and write through dataX, a data synchronization tool
双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)
如何正确的评测视频画质
Meitu lost 300 million yuan in currency speculation for half a year. Huawei was exposed to expand its enrollment in Russia. Alphago's peers have made another breakthrough in chess. Today, more big new
TDengine 离线升级流程
Oracle combines multiple rows of data into one row of data
Comparison of batch merge between Oracle and MySQL
Six simple cases of QT
From "chemist" to developer, from Oracle to tdengine, two important choices in my life
盗版DALL·E成梗图之王?日产5万张图像,挤爆抱抱脸服务器,OpenAI勒令改名
TDengine 已经支持工业英特尔 边缘洞见软件包
为什么不建议你用 MongoDB 这类产品替代时序数据库?
Viewpager pageradapter notifydatasetchanged invalid problem
Cross process communication Aidl