SwiftyJSONFetch
描述
由于许多新工作中的编码挑战都与从某处加载 JSON 有关,其中 99% 都是如此,所以我决定实现自己的解决方案,而不是使用 Alamofire(其实非常棒)或另一个库。这帮助我巩固了知识,并最终我学到了一些新知识。我还决定将其公开,以便你们可以学习,甚至让它变得更好。欢迎贡献!带来你的想法!
免责声明
尽管我为实现代码和测试投入了一些时间,但它并不被认为是完整的。随着时间的推移,我还会添加一些缺失的部分。
功能
- 从 URL 加载 JSON
- 从给定的 Bundle 文件中加载 JSON
- 自动解码为一个符合 Codable 协议的模型
安装
SwiftyJSONFetch可以通过CocoaPods获得。要安装它,只需在Podfile中添加以下行
pod 'SwiftyJSONFetch'
用法
tl;dr
使用它非常简单。只需调用
SwiftyJSONFetch().fetch(fromURLString: "http://some.url/json", forType: MyModel.self) { (response, error) in
//Do stuff
}
或者如果你想从一个文件获取某些数据
SwiftyJSONFetch().fetch(fromFileName: "someJSONFile", forType: MyModel.self) { (response, error) in
//Do stuff
}
长版本:从URL
SwiftyJSONFetch可以通过链式调用来配置。可以像这样调用
SwiftyJSONFetch()
.body(body) //some body of type Data
.header(["Content-Type":"application/json"])
.parameters(["key1":"value1"])
.method(.post)
.fetch(fromURLString: url, forType: ValidModel.self) { (response, error) in
//Do stuff
}
您不必使用所有的那些方法。例如,如果您只想设置一个标头,则可以仅使用SwiftyJSONFetch().header(["Content-Type":"application/json"]).fetch...
长版本:从文件
如果您只想从一个文件中加载一些JSON,不需要进行特殊配置。如果您想注入一个Bundle,则可以,但这就足够了。我使用了它进行单元测试,但您也可以用它来加载不同于Bundle.main
的其他Bundle。
常见问题解答
为什么不直接使用 Alamofire 呢? Alamofire 工作得非常好,我在合理使用的地方也用它。这个项目诞生是因为我为了申请工作而必须完成的大量编程挑战。使用第三方库是没问题的,但我还是想自己来做。
如果你不想使用第三方库,为什么还要使用 pod? 因为这是我独立实现的。所以它不是第三方库,而是我自己的实现。我还想和你分享,让你可以玩一玩!
是否会有更多功能? 我希望会。但它的功能将会受到限制,因为现在已经有一些其他解决方案做得很好。我认为它更多的是关于改进和学习它是如何工作的。
我可以贡献力量吗? 当然可以!只需发起一个拉取请求,我们会看看会发生什么。
可以问我一些问题吗? 当然,给我发个消息就可以了!
作者
托马斯·马利安,[email protected]
许可证
SwiftyJSONFetch 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。