Swift 4 iOS将JSON解析为Collection View

时间:2018-03-31 10:53:59

标签: ios json swift

我有一个小问题。我只知道如果将JSON图像墨水解析为集合单元格,如果JSON变为“key”:“value”但是这次我在下面的链接上得到了JSON的类型...

问题是......我在阵列[“link”,“link”,“link”]上有多个图像链接。如何在一个集合视图(下面的屏幕截图)中放入第一个数组中的3-4个图像,然后填充其他单元格

结构是......一个tableView - >在TableView的每个单元格上我放了CollectionView - >集合包含具有水平滚动和标题

的图像块的单元格

下面的截图:

https://d.radikal.ru/d30/1803/60/35717754afbd.png

Ord

使用链接加载照片的扩展程序

w

我的对象结构

{ "list": [
{
    "title" : "iPhone 5s",
    "images": [
        "https://upload.wikimedia.org/wikipedia/commons/f/fd/IPhone_5S.jpg",
        "http://img01.ibnlive.in/ibnlive/uploads/2015/12/apple-iphone5s-151215.jpg",
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR5cv-olMz3XKQNhQP4SpwiwqtiDreaBlpESHdCDc6Jm5GjHzRsHcxXrqAI"
    ]
},
{
    "title" : "iPhone 6s",
    "images": [
        "https://c1.staticflickr.com/2/1665/26162561181_01148e99ee_b.jpg",
        "https://img1.ibay.com.mv/is1/full/2017/11/item_2028958_545.jpg",
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSz8jIpCOU94HxZEab_vJdl9nGsaAOO18dqq2BXt_L2-PnWhroi",
        "https://c1.staticflickr.com/4/3907/15102682838_25e6c90469_b.jpg",
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTnMHHcDnMlsrtPpZmfLjQqlJXQNNEvTTg7WWMGcbOHOvxdVUoi"
    ]
},
{
    "title" : "iPhone 7",
    "images": [
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRQYu7fKAuYLwQCiilRNCv_wzVZbOpLGsrRzQA7prdgToCiBzsQ",
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSGS8lca49LZGvPUtJxrof6DuzvjgKiR_0Nei_b8zeR-3uq1kzyLQ",
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSGS8lca49LZGvPUtJxrof6DuzvjgKiR_0Nei_b8zeR-3uq1kzyLQ",
        "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTko9xdQRKcdJrshSPWCjTtml9eSKiABSN--VhC5YV8MMASVRfgYw",
        "https://cdn.pixabay.com/photo/2014/12/10/12/27/iphone-563070_960_720.jpg"
    ]
}
]
}

通常情况下,如果JSON具有类似结构的“密钥”:“值”,我会这样做。

extension UIImageView{
func downloadImg(from url: String){

let urlRequest = URLRequest(url: URL(string: url)!)

let task = URLSession.shared.dataTask(with: urlRequest) { (data,response,error) in

    if error != nil{
        print(error)
        return
    }

    DispatchQueue.main.async {
        self.image = UIImage(data: data!)
    }
}
task.resume()
}
}

1 个答案:

答案 0 :(得分:0)

首先,请遵守结构名称以大写字母开头的命名约定。

如果JSON包含所有密钥,您可以直接将URL字符串解码为URL,并且不要将属性声明为可选项

data

解码JSON并迭代数组(Data是收到的do { let result = try JSONDecoder().decode(Info.self, from: data) for phone in result.list { for imageURL in phone.images { print(imageURL) } } } catch { print(error) } 实例)

constexpr