问题描述
我想对我自己的结构体进行编码,我想将其保存在 UserDefaults 中,然后将其读出(解码后)。我知道如何编码第一部分(以下),这意味着如何编码数组并将其保存在 Userdefaults 中。
struct mystruct: Codable {
var int: Int
var string: String
}
var array = [mystruct(int: 2,string: "Example"),mystruct(int: 5,string: "Other Example")]
var encodedArray = try JSONEncoder().encode(array)
UserDefaults.standard.set(encodedArray,forKey: "array")
我也知道如何从 Userdefaults 取回数据:
var newArray = UserDefaults.standard.data(forKey: "array")
但我不知道如何解码整个数组...
解决方法
您只需要将自定义结构数组类型 case4
传递给 [MyStruct].self
:
JSONDecoder
struct MyStruct: Codable {
let int: Int
let string: String
}
let myStructures: [MyStruct] = [.init(int: 2,string: "Example"),.init(int: 5,string: "Other Example")]
这将打印:
[MyStruct(int: 2,MyStruct(int: 5,string: "Other Example")]