[英]Type '[String:Any]' has no subscript members in Swift
我試圖從json結果中獲取信息,並追加和訪問某些鍵值。 但是,我收到錯誤消息“類型'[String:Any]'沒有下標成員。
let json = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String: Any]
for case let studentsInfo in json["results"] {
if let studentInfo = StudentResults(json: result) {
let name = firstName + " " + lastName
StudentsResults.append(name)
}
這也是我放置在擴展中的結構。
struct StudentResults{
let firstName: String
let lastName: String
let latitude: Double
let longitude: Double
let mapString:String
let mediaURL: String
let objectID:String
let uniqueKey: String
let updatedAt: String
}
convenience init?(json: [String: Any]) {
guard let firstName = json["firstName"] as? String,
let lastName = json["lastName"] as? String
else {
return nil
}
return nil
如果您想看看這個項目,這也是我的GitHub頁面
在我看來,問題出在這行代碼上:
let json = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String: Any]
當您強制將其投射as! [String: Any]
as! [String: Any]
, try?
給您一個可選的值。
您有兩個選擇。 您可以成為一個瘋狂的人並try?
改變try?
try!
,或者您可以采用更安全的方法並像下面那樣包裝代碼:
do {
guard let json = try JSONSerialization.jsonObject(with: data!, options: []) as [String: Any] else { return }
…
} catch {
// HANDLE ERROR
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.