这太简单了,但我迷路了。我还真是新手。

我需要解析下载的json(Xcode项目中的本地化文件)并将数据填充到CollectionView

enum Response{
    case success(Data)
    case error(Error)
}

// struct follows the json
 struct InformationFromJson: Decodable {
    let id: Int
    let name: String
}



class MYJSON {
    public func downloadMYJSON(_ completion: @escaping (Response) -> ()) {

            guard let bundle = Bundle(identifier: MYJSON.bundleId), let path = bundle.path(forResource: "data", ofType: "json"), let data = try? Data(contentsOf: URL(fileURLWithPath: path)) else {
                completion(Response.error(NSError(domain: MYJSON.bundleId, code: MYJSON.bundleErrorCode, userInfo: [NSLocalizedDescriptionKey : MYJSON.bundleError])))
                return
            }
            completion(Response.success(data))
    }
}


因此,在不完全更改函数调用的情况下,如何解析json?它的下载距离功能还很远,但是我什至看不到如何添加一条打印语句来进行测试,而不会因为警卫声明而出错。

我需要简单地填充cellForRowAt

我从来没有见过像这样的巢穴守卫,所以它吸引了我。我曾经看到过let语句是分开的,所以您可以放置​​print语句至少查看是否正在下载或解析事物。

最佳答案

您可以通过传递json来解码data,无论您从何处获得

let data = try? Data(contentsOf: URL(fileURLWithPath: path))

guard let decoded = try? JSONDecoder().decode(InformationFromJson.self, from: data) else {
    return
}

10-08 05:22
查看更多