我是Swift的新手,并且有一个问题将自定义对象的数组转换为字符串。
这是我的响应类门票
public struct Tickets: Codable {
public let name: String!
public let status: String!
public let department: String!
}
网络服务呼叫后,我将获得以下响应,并将其映射到门票课程。现在,我有一系列的"门票",如下所述。
。"tickets": [
{
"name": "d5b5d618-8a74-4e5f",
"status": "VALID",
"department": "IT"
},
{
"name": "a58f54b5-9420-49b6",
"status": "INVALID",
"department": "Travel"
}
]
现在,我可以将[Tickets]
的数组转换为字符串吗?如果是这样,怎么样?另外,如何从String
类中获得[Tickets]
。
将其转换为字符串后,我想将其存储到UserDefaults中,然后将其检索
首先:
如果应该以init
方法初始化,则切勿将结构或类中的属性或成员声明为隐式未包装可选。如果它们可以是nil
,则将其声明为常规可选(?
(,否则为非选项(是的,如果没有问题或感叹号,编译器将不会抱怨(。
只是解码并用JSONDecoder()
和JSONEncoder()
let jsonTickets = """
{"tickets":[{"name":"d5b5d618-8a74-4e5f","status":"VALID","department":"IT"},{"name":"a58f54b5-9420-49b6","status":"INVALID","department":"Travel"}]}
"""
public struct Ticket: Codable {
public let name: String
public let status: String
public let department: String
}
do {
let data = Data(jsonTickets.utf8)
let tickets = try JSONDecoder().decode([String:[Ticket]].self, from: data)
print(tickets)
let jsonTicketsEncodeBack = try JSONEncoder().encode(tickets)
jsonTickets == String(data: jsonTicketsEncodeBack, encoding: .utf8) // true
} catch {
print(error)
}