【发布时间】:2018-02-12 15:40:13
【问题描述】:
所以,我使用 SwiftyJSON 从 API 下载数据。我正在转换它,并循环获取所有结果。我正在尝试将每个结果的特定部分打印出来,但似乎无法正常工作。
我在下面使用的代码获取 json,并循环通过它并打印出下面的内容。从打印的内容来看,我只想得到“主题”。
do {
let jsonObj = try JSONSerialization.jsonObject(with: data, options: []) as! [String: AnyObject]
let json = JSON(jsonObj)
let pms: NSArray = json["result"]["pms"].arrayValue as NSArray
let arrayLength = pms.count
for var i in (0..<arrayLength) {
let pm = pms[i]
i+=1
}
} catch let error as NSError {
print(error)
}
然后给出如下值:
{
"subject" : "Example",
"status" : 1,
"recipient" : 012345,
"recipientusername" : "Example",
"dateline" : "2018-01-01",
"sender" : 012345,
"pmid" : 012345,
"senderusername" : "DoctorSheep"
}
{
"subject" : "Example 2",
"status" : 1,
"recipient" : 678910,
"recipientusername" : "Example 2",
"dateline" : "2018-01-01",
"sender" : 678910,
"pmid" : 678910,
"senderusername" : "Example 2"
}
如果我尝试类似的东西
let subject = pm["subject"]
我收到“类型 'Any' 没有下标成员”的错误。
【问题讨论】:
-
有几点需要注意。在 Swift 中,除非必须,否则不要使用 NS 值。使用 Swift 版本 NSArray = Array。使用 Codable 协议帮助解析 JSON,然后遍历数组并获取主题值
-
哇,你刚刚告诉我的那个简单的事情解决了它。
-
我现在将进行编辑以显示。