SwiftyJSONFetch 0.1.3

SwiftyJSONFetch 0.1.3

Thomas Marien 维护。



  • Thomas Marien

SwiftyJSONFetch

CI Status Version License Platform

描述

由于许多新工作中的编码挑战都与从某处加载 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 文件。