Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
hbystudio
Cocoa
提交
96eaee7b
C
Cocoa
项目概览
hbystudio
/
Cocoa
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Cocoa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
96eaee7b
编写于
8月 20, 2020
作者:
L
libb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
泛型编程优化
Change-Id: I9277a3d20d4ce6d223c2f65067a481573a01a7f4
上级
4e9ec5a1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
14 deletion
+33
-14
swiftdemo/swift01/swift01/JSONPlaceholder.swift
swiftdemo/swift01/swift01/JSONPlaceholder.swift
+14
-6
swiftdemo/swift01/swift01/Resource.swift
swiftdemo/swift01/swift01/Resource.swift
+19
-8
未找到文件。
swiftdemo/swift01/swift01/JSONPlaceholder.swift
浏览文件 @
96eaee7b
...
...
@@ -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
)
}
swiftdemo/swift01/swift01/Resource.swift
浏览文件 @
96eaee7b
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录