首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

封装一个 Swift-Style 的网络模块

Swift 跟 OC 有着完全不同的设计哲学,它鼓励你使用 protocol 而不是 super class,使用 enum struct 而不是 class,它支持函数式特性、范型类型推导,让你可以轻松封装异步过程...如果你还是用 OC 的思维写着 Swift 代码,那可以说是一种极大的资源浪费,你可能还会因为 Swift 弱鸡的反射而对它感到不满,毕竟 Swift 在强类型安全性方面下足了功夫,如果不使用 OC...OOP 消息传递非常适合 UI 编程,在这方面来说 OC 是非常称职的,整个 Cocoa Touch 框架也都是面向对象的,所以对于 iOS 开发来说,不管你使用什么语言,都必须熟悉 OOP。...讲到网络层就绕不开 AlamofireAlamofire 几乎是现在用 Swift 开发 iOS App 的标配,它是个很棒的库,几乎能满足所有网络方面的日常需求,但如果对它再封装一下的话,不仅使用起来更得心应手...,具体的处理逻辑不同项目都不一样,主要看跟服务器的约定,我就不细说了。

1.9K41

Alamofire 上传图片入门教程(下)

self.downloadTags(firstFileID) { tags in completion(tags: tags, colors: [PhotoColor]()) } 编译运行你的工程,上传一个文件...String }) // 4. completion(tags) 下面是每步的代码: 检查响应是否成功;如果不成功,输出错误信息并调用 completion 对返回 json 数据进行解析。...注意: 你使用 Swift 的 flatMap 方法来进行迭代,这个方法在遇到值为 nil 的情况不会崩溃,并且会从返回结果中移除为 nil 的值。这可以让你使用条件解包(as?)...Alamofire 提供了一个简单的方法来排除重复的代码并且提供集中配置。这就需要创建一个结构体,遵循 URLRequestConvertible 协议,并且更新你的上传请求调用。...创建一个 Swift 文件,点击 File\New\File…,然后在 iOS 下面选择 Swift 文件,点击下一步,文件命名为 ImaggaRouter.swift,然后点击创建。

2.6K20

Swift 编写网络层单元测试

不过由于 Swift 的函数式特性,像《单元测试的艺术》中那样单纯地用 OOP 思维编写测试可能会有些麻烦,本文临近结尾部分写了一点自己用过的使用“伪装函数”进行测试的方法,可能大家以前没见过,我自己也是突然想到的...要直接测试网络异步调用,可以使用XCTest提供的expectationWithDescription+waitForExpectationsWithTimeout,举个例子: func testFetchDataWithAPI_invalidAPI_failureResult...parameters: Request parameters, default = nil - parameter responseKey: Key of target value, use...工作单元可能有三种最终结果:返回值、改变系统状态调用第三方对象。相应的单元测试一般可以分为三类:基于返回值的测试、基于状态的测试交互测试。...用户使用时只需调用defaultManager即可,而测试时我们可以手动构建一个符合NetworkRequest签名的函数通过初始化方法注入NetworkManager中。

2K20

HTTP 请求轻松搞定:Swift 网络编程的不二之选 | 开源日报 No.38

Alamofire/Alamofire[1] Stars: 39.8k License: MIT Alamofire 是一个用 Swift 编写的 HTTP 网络库。...完美兼容 Swift 并发,支持 iOS 13、macOS 10.15、tvOS 13 watchOS 6 及以上版本。 提供 URL/JSON 参数编码,轻松应对各种数据传输需求。...支持上传文件、数据、流 MultipartFormData,满足多样化的数据上传需求。...端端关联,只需单击几下即可从浏览器会话重播到日志跟踪 通过 Clickhouse 支持高性能查询 直观易用的全文搜索属性搜索语法 (例如 level:err) 从数十亿个事件中自动聚类事件模式 无需复杂查询语言的仪表板高基数事件...它提供了每个域名的重要元数据:父实体、普及度、指纹识别使用情况、cookie 使用情况、隐私政策性能等。

29620

Swift 项目中涉及 JSONDecoder,网络请求,泛型协议式编程的一些记录想法

前言 最近项目开发一直在使用 swift,因为 HTN 项目最近会有另外一位同事加入,所以打算对最近涉及的一些技术自己的一些想法做个记录,同时也能够方便同事熟悉代码。...JSON 数据的处理 做项目只要是涉及服务器端接口都没法避免 JSON 数据打交道。...对于来自网络的 JSON 结构化数据的处理,可以使用 JSONDecoder 这个苹果自己提供的字符串转模型类,这个类是在 Swift 4 的 Fundation 模块里提供的,可以在Swift 源码目录...在 Swift 里就是 Alamofire GitHub - Alamofire/Alamofire: Elegant HTTP Networking in Swift 。...我在 Swift 1.0 之前 beta 版本时就注意 Alamofire 库里,那时还是 Mattt Thompson 一个人在写,文件也只有一个。如今功能已经多了很多,但代码量依然不算太大。

6.5K20

5 分钟,带你快速撸一个 iOS App

使用 Python 写完爬虫后,有时候我们需要在手机上实时对爬虫进行调度,或实时展示爬虫的结果 面对这种场景,我们可以将爬虫逻辑写成 API 部署服务器,然后在移动端编写 App,通过界面元素控件直接调用接口即可...然后,使用 Xcode 创建一个项目 这里模版选择 iOS App,输入项目名称,编程语言选择「 Swift 」,点击下一步完成项目的创建 ?...实战 实战部分,我们以一个简单的登陆页面来进行讲解 3-1 安装依赖库 由于项目使用 Swift 开发,这里推荐使用 SPM( Swift Package Manager )来安装依赖 比如,网络请求库...「 Alamofire 」 项目地址:https://github.com/Alamofire/Alamofire 安装方式:File - Swift Packages - Add Package Dependency...Alamofire 进行网络请求,最后将结果展示写入结果控件绑定数据中去即可 Button(action: { //具体的操作 print

87240

202 - Swift 的核心是什么?

视频中介绍了从 OOP(面向对象编程) POP(面向协议编程)的转变过程。...OC 来开发的,后来学习了 Swift,当时也是有一搭没一搭的学,了解了一下 Swift 的基本语法,感觉还是很简单的,因为当时 Swift 也是刚出来,很不稳定,1.0 2.0,甚至都不兼容,所以也就没有选择使用...在上面的图中,可以看出在 Swift 的标准库中,仅有 4 个class,其余下的有 87 个 struct 8 个 enum 的实例共同构建了 Swift 功能的核心。...说了这么多,最后还是希望你们能明白 Swift 是面向协议的编程, 在开发过程中请多使用 struct protocol,当你没有选择的时候再使用 class。...如下代码: target 'News' do use_frameworks!

94020

iOS开发 使用Pods管理调试个人Framework写在前面准备工作编写Podfile测试后记

写在前面 最近换了新公司,又是一个巨大的挑战 一是海外项目,二是协同,三是使用Swift 虽说Swift4.0已经很新了,但ABI的稳定进程还是放在了5.0,加上之前几乎没怎么用过Swift做过什么大型项目...所以本文都是使用Swift 由于项目还要与国外的小伙伴合作,一些private的东西公司也不打算直接给他们,这不,就让我们做成library的形式提供给他们,对于我们来说也就是Framework了。...主工程 我们将Framework工程拷贝主工程文件目录中 ? 工程目录 编写Podfile 注意!...#忽略警告 use_frameworks!...效果 后记 demo已上传Github 跟盆友一起搞的小博客有兴趣的可以看看,此文也会同步过去,也包含一些服务器相关的内容, 小胖博客

1.6K40

App架构设计经验谈:技术选型

另外,WebView加载H5也有两种模式,一种是加载服务器的H5页面,一种是加载本地的H5页面。加载服务器的H5页面比较简单,WebView只要load一下URL就可以了。...不需要顾虑团队里没人懂Swift。...我个人也不太喜欢CocoaPods,使用起来比较麻烦,耦合性也较高,我使用过程中也经常出问题,而且还总是不知道该怎么解决,要移除时也是非常麻烦。...再推荐几个关于Swift的第三方库: AlamofireSwift版本的网络基础库,AFNetworking是同一个作者 AlamofireImage:基于Alamofire的图片加载库 ObjectMapper...:Swift版本的JsonModel转换库 AlamofireObjectMapper:Alamofire的扩展库,结合了ObjectMapper,自动将JSON的Response数据转换为了Swift

1.4K10

如何使用Carthage管理iOS依赖库安装使用Carthage

说到Carthage,就要先说swift,2014年苹果发布swift初期,用swift编写的第三方库就只能通过拖动源代码自己的项目中才能被调用, 由于当时只有寥寥无几的开源库,且不能打包,加上swift1.0...现在,你已经安装好了Carthage,接下来就是在你的项目中使用carthage了: 1、通过终端进入项目所在的文件夹: $ cd ~/Path/Project 后面的路径替换成你的项目所在的路径即可...3、使用xcode打开cartfile文件 $ open -a Xcode Cartfile 并在打开的文件中加入以下内容 github "Alamofire/Alamofire" ~>...3.0版本 >= 3.0表示使用3.0或更高的版本 如果你没有指明版本号,则会自动使用最新的版本 4、保存并关闭cart file文件,在终端执行命令 $ carthage update...如需要使用AlamofireSwiftyJSON,就在相应的类前添加 import Alamofire import SwiftyJSON 即可。

1.1K20

成为一名优秀 Swift 开发人员的 10 个小技巧

Xcode 11 在右侧有一个代码导航器,基于此可以更频繁地使用标记。 4. 首先代码来实现导航,而不是 Storyboard Storyboard 很好,自从 Apple 推出后,我就一直使用。...我经常会用到以下库: HTTP 层:使用 Alamofire图像处理库:使用 Alamofire image 或 Kingfisher; 自动布局辅助库,如 Snapkit; UI 工具,如 HUD...但是 Swift 扩展可以轻松地将简单方法集成通用类上,而无需做任何复杂的事情。...扩展很棒,你可能会过渡使用它。不过没关系,将扩展组织单独的文件中,保持可读性就行了。 7. 尽可能使用容器视图 随着 UI 越来越复杂,我们通常必须集成 Tab、滑动布局,Page 等内容。...在本文中,我将重点更多地放在Swift功能上,以提高代码效率并传递Swift机制的优点。我提供了一些简单的示例,说明每个iOS应用程序开发人员应关注的重点。 - EOF -

2.2K40
领券