这太简单了,但我迷路了。我还真是新手。
我需要解析下载的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
}