import Foundation
struct BookItem: Codable {
var bookName: String
var bookDescribe: String
var bookPrice: Float
//区别 可以将字典中`name`的值解析到`bookName`
fileprivate enum CodingKeys: String, CodingKey {
case bookName = "name"
case bookDescribe
case bookPrice
}
}
vc中调用
fileprivate func codableDemo() {
//1. json字符串转自定义对象
let json = """
{
"name": "米饭童鞋",
"bookPrice": 200.87,
"bookDescribe": "A handsome boy."
}
"""
//2. string -> data
guard let data = json.data(using: .utf8) else {
return
}
//3. data -> item
let decoder = JSONDecoder()
guard let book = try? decoder.decode(BookItem.self, from: data) else {
return
}
print(book, book.bookName, book.bookPrice, book.bookDescribe)
//4. 自定义对象存 UserDefaults
UserDefaults.standard.setItem(book, forKey: "book")
guard let bk1 = UserDefaults.standard.getItem(BookItem.self, forKey: "book") else {
return
}
print(bk1)
}