提交 96eaee7b 编写于 作者: L libb

泛型编程优化

Change-Id: I9277a3d20d4ce6d223c2f65067a481573a01a7f4
上级 4e9ec5a1
......@@ -37,10 +37,18 @@ extension JSONPlaceholder : Decodable {
}
extension JSONPlaceholder {
static let all = Resource<[JSONPlaceholder]>(JSONPlaceholder.url!) {
(data) -> [JSONPlaceholder]? in
let posts = try? JSONDecoder().decode([JSONPlaceholder].self, from: data)
return posts
}
// static let all = Resource<[JSONPlaceholder]>(JSONPlaceholder.url!) {
// (data) -> [JSONPlaceholder]? in
// let posts = try? JSONDecoder().decode([JSONPlaceholder].self, from: data)
// return posts
//
// }
// static let all = Resource<[JSONPlaceholder]>(url:JSONPlaceholder.url!) {
// (data) -> [JSONPlaceholder]? in
// return Resource.commonParse(data);
// }
static let all = Resource<[JSONPlaceholder]>(url:JSONPlaceholder.url!,parse:Resource.commonParse)
}
......@@ -11,17 +11,28 @@ import Foundation
struct Resource<T> {
let url: URL
let parse: (Data) -> T?
}
extension Resource where T: Decodable {
init(_ url: URL, parseJSON: @escaping (Data) -> T?) {
self.url = url
// self.parse = { data in
// let decoder = JSONDecoder()
// let object = try? decoder.decode(T.self, from: data)
// return object
// }
self.parse = parseJSON
// init(_ url: URL, parseJSON: @escaping (Data) -> T?) {
// self.url = url
//// self.parse = { data in
//// let decoder = JSONDecoder()
//// let object = try? decoder.decode(T.self, from: data)
//// return object
//// }
// self.parse = parseJSON
//
//
// }
static func commonParse(_ data:Data) -> T? {
let decoder = JSONDecoder()
let object = try? decoder.decode(T.self, from: data)
return object
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册