簡體   English   中英

類型'[String:Any]'在Swift中沒有下標成員

[英]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頁面

https://github.com/SteveBurgos95/UdacityMapProject

在我看來,問題出在這行代碼上:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM