Как разобрать строковые данные из массива внутри JSON другого массива в Swift 4 - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно показать строковые данные в tableView.

{
"success": [
    [
        "An Ad with order id 2563 at location DLF, Delhi has been approved | 20 hours before|Shashank Tiwari"
    ],
    [
        "An Ad with order id 2539 at location V3S Mall has been approved | 1 week before|Shashank Tiwari"
    ],
    [
        "An Ad with order id 2515 at location Pacific Mall has been approved | 1 week before|Shashank Tiwari"
    ],
    [
        "An Ad with order id 2500 at location Ambience Mall has been rejected | 1 week before|Shashank Tiwari"
    ],
    [
        "An Ad with order id 2499 at location Vience Mall has been approved | 1 week before|Shashank Tiwari"
    ],
    [
        "An Ad with order id 2480 at location DLF, Delhi has been approved | 2 weeks before|Shashank Tiwari"
    ]
}

Поэтому я анализирую данные, как показано ниже, но не могу добавить данные в массив arrData.

           let json = try JSON(data:data
           let result = json["success"]                                           

                 print(result)


                    for arr in result.arrayValue {

                        self.arrData.compactMap{ $0 as? NSArray}
            }

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Если вы хотите сгладить массив, тогда compactMap - это неправильный API.

Использование reduce

let result = json["success"]
let array = (result.arrayObject as! [[String]]).reduce([], +)
self.arrData.append(contentsOf: array)
  • arrayObject возвращает [Any]?, вы необходимо преобразовать его в вещественный тип [[String]]
  • reduce преобразует двумерный массив в одномерный массив.
0 голосов
/ 30 апреля 2020

Вы можете сделать это другим способом, например

let result = json["success"]
if let arr = result.arrayObject as? [[String]] {
    let array = arr.map { $0.first! }
    self.arrData.append(contentsOf: array)
}
...