swift 使用 almaofire 获取字典的所有值并传递给 viewcontroller

swift getting all values of a dictionary and passing to viewcontroller using almaofire

您好,我有一个从 api 收集数据的应用程序,我使用 Alamofire 和 swiftyJSON。我现在面临的当前挑战是我在一个数组中有不同的词典,我希望能够重新调整词典中的特定项目。这是我正在使用的数组

Json

[
    {
        "images": [
            {
                "id": 8,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f3.jpg",
                "caption": "",
                "display_order": 0,
                "date_created": "2018-05-26T17:24:34.762848Z",
                "product": 13
            },
            {
                "id": 9,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f5.jpg",
                "caption": "",
                "display_order": 1,
                "date_created": "2018-05-26T17:24:34.815214Z",
                "product": 13
            },
            {
                "id": 10,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f2.jpg",
                "caption": "",
                "display_order": 2,
                "date_created": "2018-05-26T17:25:19.117271Z",
                "product": 13
            },
            {
                "id": 11,
                "original": "http://127.0.0.1:8000/media/images/products/2018/05/f4.jpg",
                "caption": "",
                "display_order": 3,
                "date_created": "2018-05-26T17:25:19.155159Z",
                "product": 13
            }
        ]
    }
]

获取单张图片是这样的

Alamofire.request(URL, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HEADER).responseJSON { (response) in

        if response.result.error == nil {

            guard let data = response.data else {return}
            do {

                if let json = try JSON(data: data).array {
                    for item in json {

 let images = item["images"][0]["original"].stringValue


 ....

这 return 只是索引图像。[0]如果它设置为 [1],它 return 将索引图像设置为 1。

如何 return 所有图像,以便我可以遍历所有图像并显示在集合视图控制器中。将根据要求提供更多代码。

你可以这样编辑:

if let json = try? JSON(data: data).arrayValue {


        for item in json {
            let imagesList = item["images"].arrayValue

            let imagesURL = imagesList.map {[=10=]["original"].string}.compactMap({[=10=]})
             if imagesURL.count > 0{
                print( imagesURL[0])
            }


        }
    }

或:

do {
            let json  = try JSON(data: data).array

            json?.forEach({ (item) in
                let imagesList = item["images"].arrayValue

                let imagesURL = imagesList.map {[=11=]["original"].string}.compactMap({[=11=]})
                  if imagesURL.count > 0{
                print( imagesURL[0])
                }
            })
  } catch  {
          print(error.localizedDescription)
}