Как получить объект из массива в swift

#arrays #swift

#массивы #swift

Вопрос:

Я хочу получить статус и сообщение из этого массива. Я не знаю, как отобразить.

 [<null>, {
    message = "Not matched";
    status = 400;
}]
  

Это мой код

 class QRScanValidAPIMapper: NSObject {
    var message: String!
    var status: Int!

    init(_ rawData: Any) {
        print(rawData)
        let data = rawData as? Dictionary<String,Any>
        self.message = data?["message"] == nil ? rawData as! String : data?["message"] as! String
        self.status = data?["status"] == nil ? 0 : data?["status"] as! Int
    }
}
  

Комментарии:

1. Является ли первая часть вашего вопроса тем, что print(rawData) печатает? итак, у вас есть нулевой первый элемент в массиве?

2. пусть mappedResponse = QRScanValidAPIMapper(данные) я добавил данные. @u.gen

3. Вы уверены, { message = "Not matched"; status = 400; } что в этом массиве есть идентичный словарь?

4. Если rawData это массив, как то, что вы, кажется, показываете, ваше приведение к Dictionary<String,Any> всегда будет неудачным.

5. Хорошо, позвольте мне это исправить. Я надеюсь, что массив будет таким же, как вы описываете для всех сценариев сбоя.

Ответ №1:

Извлеките failure словарь из Array и извлеките из него значение. вот так —

 let array = [nil, ["message" : "Not matched", "status" : 400]]

for response in array {

        if let failureResponse = response {

            print(failureResponse["message"]!)
            print(failureResponse["status"]!)
        }
}
  

Дайте мне знать, по-прежнему ли у вас какие-либо проблемы.

Комментарии:

1. Я получил эту ошибку в строке 6 Инициализатор для условной привязки должен иметь необязательный тип, а не ‘Any’

2. @RedHeart Можешь добавить line 6 ?

3. for response in array {} эта строка —

4. @RedHeart что такое array тип данных?

5. если разрешить failureResponse = array как? [Строка: любая] {} мне нужно добавить этот код `как? [Строка: любая] {}` Спасибо, брат