【问题标题】:How to parse array of JSON in Swift 3 [duplicate]如何在 Swift 3 中解析 JSON 数组 [重复]
【发布时间】:2017-06-05 10:43:30
【问题描述】:

我正在从 Socket 获取一些我想访问的数据,但我收到错误消息,说不能每次都将 NSArray 转换为 NSDictionary。

struct SocketEventHandler {
    let event: String
    let id: UUID
    let callback: NormalCallback

    func executeCallback(with items: [Any], withAck ack: Int, withSocket socket: SocketIOClient) {
        callback(items, SocketAckEmitter(socket: socket, ackNum: ack))
    }
}


let onFriendRequestStatus: NormalCallback = {dataArray,socketAck in
        AppLog.debug(tag: TAG, msg: "Response: \(dataArray)")
        AppLog.debug(tag: TAG, msg: "Response: \(dataArray[0])")
        let response  = dataArray[0] as! Dictionary<String, Any> **// APP CRASHES ON THIS LINE**
}

回应:-

[
    {
        "status": "A",
        "acceptorId": 126,
        "id": 94,
        "createdAt": "2017-06-05T09:50:42.000Z",
        "updatedAt": "2017-06-05T09:52:26.000Z",
        "userId": 126,
        "friendId": 401
    }
]

错误 - 无法将类型“__NSArrayM”(0x102f0de00) 的值转换为“NSDictionary”(0x102f0e2d8)。

【问题讨论】:

    标签: ios json dictionary swift3


    【解决方案1】:

    可能你有二维数组意味着dataArray 的元素也是Array 而不是Dictionary。

    if let response = dataArray[0] as? [[String: Any]], let dictionary = response.first {
    
        print(dictionary["status"])
    }
    

    【讨论】:

      【解决方案2】:

      在句子崩溃时下断点,然后使用以下命令检查dataArray到底是什么:

      po print(dataArray)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        • 1970-01-01
        • 2017-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-09
        相关资源
        最近更新 更多