ios - Swift 4 iOS 将 JSON 解析为 Collection View

标签 ios json swift

我有一个小问题。如果 JSON 作为“键”:“值”出现,我只知道如何将 JSON 图像墨水解析为收集单元但这次我在下面的链接上获得了 JSON 的类型...

问题是...我在数组 ["link", "link", "link"] 上有多个图像链接。我如何将第一个数组中的 3-4 个图像放在一个 Collection View 中(下面的屏幕截图),然后填充其他单元格

结构是.. 一个 tableView -> 在 TableView 的每个单元格上我放了 CollectionView -> Collection 有带水平滚动和标题的图像 block 的单元格

截图如下:

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

{ "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"
    ]
}
]
}

使用链接加载照片的扩展

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()
}
}

我的对象结构

struct info : Decodable {
let list : [lists]
}
struct lists : Decodable{
let title : String?
let images : [String]?
}

通常,如果 JSON 有类似结构的 "key":"value"我会这样做。

cell.productImage.downloadImg(from: (arrayImg?[indexPath.row].url)!)

最佳答案

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

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

struct Info : Decodable {
    let list : [List]
}
struct List : Decodable {
    let title : String
    let images : [URL]
}

解码 JSON 并迭代数组(data 是接收到的 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) }

关于ios - Swift 4 iOS 将 JSON 解析为 Collection View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49586927/

相关文章:

json - alamofire 编码完成 JSON 到字典

ios - 在 64 种不同的可用概率中切换的最佳方式是什么

jquery - 即使 OnResultExecuted 成功调用后,JsonResult 也未返回

swift - 如何在 Swift 3 中记录函数闭包参数的参数?

ios - 使用来自其他 View 的查询过滤 TableView

objective-c - 从不兼容类型'void *'分配给'uint8_t *'(aka'unsigned char *')

arrays - 使用 Golang 中的 sjson 递归地将数组更改为 JSON 中的非数组

java - 无法使用 Jackson 解码 LocalDate 和 LocalTime 类

ios - 如何在多个场景中通过步进器更改字体大小?

objective-c - 这个 objective-c 代码会导致内存泄漏吗?