当前位置:网站首页>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 》
边栏推荐
- Design of stepping motor controller based on single chip microcomputer (forward rotation and reverse rotation indicator gear)
- Baidu app's continuous integration practice based on pipeline as code
- Kotlin compose multiple item scrolling
- TypeError: Cannot read properties of undefined (reading ‘cancelToken‘)
- 硬核,你见过机器人玩“密室逃脱”吗?(附代码)
- Application of data modeling based on wide table
- Optimize database queries using the cursor object of SQLite
- Those who are good at using soldiers, hide in the invisible, and explain the best promotional value works in depth in 90 minutes
- Wechat applet - simple diet recommendation (2)
- Tianlong Babu TLBB series - single skill group injury
猜你喜欢
Cent7 Oracle database installation error
TDengine 连接器上线 Google Data Studio 应用商店
为什么不建议你用 MongoDB 这类产品替代时序数据库?
Charm of code language
La voie de l'évolution du système intelligent d'inspection et d'ordonnancement des petites procédures de Baidu
How to get the STW (pause) time of GC (garbage collector)?
MySQL character type learning notes
一文读懂TDengine的窗口查询功能
How Windows bat script automatically executes sqlcipher command
如何獲取GC(垃圾回收器)的STW(暫停)時間?
随机推荐
ArcGIS Pro creating features
把欧拉的创新带向世界 SUSE 要做那个引路人
[NTIRE 2022]Residual Local Feature Network for Efficient Super-Resolution
(1) Complete the new construction of station in Niagara vykon N4 supervisor 4.8 software
Evolution of Baidu intelligent applet patrol scheduling scheme
Getting started with Apache dolphin scheduler (one article is enough)
一文读懂TDengine的窗口查询功能
The comparison of every() and some() in JS uses a power storage plan
Oracle combines multiple rows of data into one row of data
Generics, generic defects and application scenarios that 90% of people don't understand
自动化规范检查软件如何发展而来?
Solve the problem of no all pattern found during Navicat activation and registration
盗版DALL·E成梗图之王?日产5万张图像,挤爆抱抱脸服务器,OpenAI勒令改名
Cent7 Oracle database installation error
QT realizes signal transmission and reception between two windows
TDengine × Intel edge insight software package accelerates the digital transformation of traditional industries
如何正确的评测视频画质
Matrix processing practice
Roll up, break through 35 year old anxiety, and animate the CPU to record the function call process
MySQL字符类型学习笔记