#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 как? [Строка: любая] {} мне нужно добавить этот код `как? [Строка: любая] {}` Спасибо, брат