简体   繁体   中英

Error: value of type 'Optional<NSMutableArray>' has no subscripts Array[0] in Swift iOS

I am fetching some data from my Objective C classes. Here is my 'dataArray' data:

Optional(<__NSArrayM 0x2818cff60>(
{
    date = 1574164423;
    shakeState = 1;
},
{
    date = 1574164431;
    shakeState = 1;
}
)
)

I have created a Modal class 'ShakeInfo', that contain date and shakeState value.

I just want to convert this Array into array of 'ShakeInfo' object. My problem is when I am trying to print 'dataArray[0]' then I am getting error:

error: <EXPR>:3:1: error: value of type 'Optional<NSMutableArray>' has no subscripts
dataArray[0]

How can I read this array value index wise. Please advise me.

Edited:

Here is my code after getting dataArray:

do {
     let data = try JSONSerialization.data(withJSONObject: dataArray!)
     let responseStr = String(data: data, encoding: .utf8)!

     print(responseStr)//[{"date":"1574164424","shakeState":1},{"date":"1574164430","shakeState":1}]

     var shakeInfoDetails = [ShakeInfo]()

     //how to add 'responseStr' value in the shakeInfoDetails Modal Array

     } catch {

      print("JSON serialization failed: ", error)
     }
let data = #"[{"date":"1574164424","shakeState":1},{"date":"1574164430","shakeState":1}]"#.data(using: .utf8)!

//Model

struct ModelRecord : Codable {

    var date : String
    var shakeState : Int
}

class Model {

    var date : Date
    var shakeState : Int

    init?(record: ModelRecord) {

        guard let secondsFrom1970 = Double(record.date) else {
            return nil
        }

        date = Date(timeIntervalSince1970: secondsFrom1970)
        shakeState = record.shakeState
    }
}

//Decoding

let decoder = JSONDecoder()

do {
    let records = try decoder.decode([ModelRecord].self, from: data)

    let models = records.compactMap { Model(record: $0) }

}
catch {
    print("Decoding Error: \(error)")
}

Answer to original question:

let a1 : NSMutableArray? = NSMutableArray(array: ["A", "B", "C"])

a1?.object(at: 2)

Please read about the following:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM