我想使用 decodeable 解析 JSON,但我得到一个错误类型不匹配,例如:
Swift.DecodingError.Context(codingPath: [], debugDescription: "预期解码数组,但找到了字典。"
我的 JSON :
{
"code": 0,
"data": {
"_id": "string",
"title": "string",
"images": [
"string"
],
"shortDesc": "string",
"desc": "string",
"price": 0,
"discountPrice": 0,
"quantity": 0,
"category": {
"name": "string",
"val": "string"
},
"brand": {
"name": "string",
"val": "string"
},
"variants": [
{
"name": "string",
"value": "string",
"quantity": 0,
"variantCode": "string"
}
],
"stockCode": "string",
"updatedDate": "2018-06-05T14:04:51.226Z",
"status": true,
"isDeleted": true,
"isNew": true,
"freeCargo": true,
"createDate": "2018-06-05T14:04:51.226Z",
"note1": "string",
"note2": "string",
"note3": …Run Code Online (Sandbox Code Playgroud) 我有一个自定义类的对象数组。我班是人。所以我想检查arrPerson是否包含一个对象,那么它不应再次添加到数组中。
这是我的代码
for value in data {
if self.arrPerson.contains(where: {($0.id != value.id)}){
self.arrPerson.append(value)
}
}
Run Code Online (Sandbox Code Playgroud)
请告诉我如何检查自定义类的对象是否已添加,然后不应再次添加
是否可以实现Encodable和Decodable属性UIColor
当我尝试添加Decodable扩展时,我收到错误
extension UIColor : Decodable {
public required init(from decoder: Decoder) throws {
self.init(red: 1, green: 1, blue: 1, alpha: 1)
}
}
Run Code Online (Sandbox Code Playgroud)
错误:ColorStuff.playground:98:21:错误:初始化程序要求'init(from :)'只能通过
required初始化程序在非最终类'UIColor'的定义中满足公共必需的init(来自解码器:解码器)抛出{
我错过了一些明显的东西吗?
我对Encodable扩展没有任何问题- 这似乎是一个Decodable问题.
错误消息告诉我,由于无法访问UIColor类定义,我无法执行此操作
新项目

旧项目

当我创建一个新的或继续使用旧的时,我根本无法使用故事板。请问有什么帮助吗?
我在 Swift UI 代码中遇到错误 1) 协议类型“Any”不能符合“视图”,因为只有具体类型才能符合协议 2)“文本”类型的值没有成员“颜色”
任何人都可以找到解决方案吗?

我知道之前有人问过这个问题,但答案是在 Swift 3 中并使用旧版本的 Alamofire。
问题:无法弄清楚如何从 JSON 响应中检索数据,主要是api_key。
这是我的回复代码:
Alamofire.request(serverLink!, headers: headers).responseJSON{ response in
if response.value != nil {
//Some code to get api_key
print(response)
} else {
print("error")
}
Run Code Online (Sandbox Code Playgroud)
当我print(response)得到以下信息时:
SUCCESS: {
user = {
"api_key" = 9a13f31770b80767a57d753961acbd3a18eb1370;
"created_on" = "2010-09-30T12:57:42Z";
firstname = Paul;
id = 4;
"last_login_on" = "2018-03-27T10:15:10+03:00";
lastname = Smith;
login = admin;
mail = "admin@demo.com";
status = 1;
};
}
Run Code Online (Sandbox Code Playgroud)
我需要得到的是
“api_key”= 9a13f31770b80767a57d753961acbd3a18eb1370;
它可以是数组、字典或仅包含以下内容的字符串形式:
9a13f31770b807...
有人可以向我解释如何从这个请求中获取(解码)它吗?
编辑
print(response.result.value):
RESPONSE: Optional({ …Run Code Online (Sandbox Code Playgroud)