序:做过iOS开发的人肯定都知道AFN,现在Swift逐渐流行AFN团队又用Swift写了Alamofire。从头开始学习一下,看看新的Alamofire有什么性能的优化和不同。
lamofire是一个为iOS和macOS打造的并基于Swift的网络库.它在Apple的基础网络架构上提供了更加优雅的接口来简化繁重而常用的网络请求任务。 Alamofire提供了链式的request/response方法,JSON的传参和响应序列化,身份认证和其他特性。Alamofire的优雅之处在于它完完全全是由Swift写成的,并且没有从它的Objective-C版本-AFNetworking那继承任何特性。
转载:https://www.jianshu.com/p/07b1ec36a689 最近AFNetworking的作者Matt Thompson 提出了一个新的类似AFNetworking的网络基础库,并且专门使用最新的Swift语言写的,名为 Alamofire. 一、正常导入,CocoaPods 1-1、注意下CocoaPods版本 gem install cocoapods CocoaPods 0.39.0+ is required to build Alamofire 3.0.0+. 1-2、
今天博客中的Alamofire源码的版本是以3.4版本为例。上篇博客系统的对NSURLSession相关的东西进行了详细的解析,详情请看《详解NSURLSession》,为了就是给本篇博客打下基础。因为AlamoFire就是对NSURLSession及其相关的东西进行了进一步的封装,让网络请求使用起来更为简单。本篇博客就详细的来窥探一下AlamoFire源码,主要来看一下AlamoFire是如何对NSURLSession进行封装的,并且来看一下在封装时使用了哪些Swift语言中的高级用法,也就是看一下Swi
在 ViewController 的 extension 里面,uploadImage(_:progress:completion:) 的下面添加如下的代码:
单元测试主要用来检测某个工作单元的结果是否符合预期,以此保证该工作单元的逻辑正确。上次写封装一个 Swift-Style 的网络模块的时候在结尾提了一下单元测试的重要性,评论中有朋友对网络层的单元测试有一些疑惑。我推荐他去看《单元测试的艺术》(这本书让我对单元测试有了新的认识),但由于该书是以 C# 为例写的,可能会对 iOS 开发的朋友造成一定的阅读障碍,所以我还是决定填一下坑,简单介绍一下用 Swift 进行网络层单元测试的方法。不过由于 Swift 的函数式特性,像《单元测试的艺术》中那样单纯地用 OOP 思维编写测试可能会有些麻烦,本文临近结尾部分写了一点自己用过的使用“伪装函数”进行测试的方法,可能大家以前没见过,我自己也是突然想到的,欢迎提出各种意见。
Swift 跟 OC 有着完全不同的设计哲学,它鼓励你使用 protocol 而不是 super class,使用 enum 和 struct 而不是 class,它支持函数式特性、范型和类型推导,让你可以轻松封装异步过程,用链式调用避免 callback hell。如果你还是用 OC 的思维写着 Swift 代码,那可以说是一种极大的资源浪费,你可能还会因为 Swift 弱鸡的反射而对它感到不满,毕竟 Swift 在强类型和安全性方面下足了功夫,如果不使用 OC 的 runtime,在动态性方面是远不如 OC 的。
最近开始做了一个新项目,几乎没有时间来写自己的博客,大部分都在写 feature(BUG),自己研究的东西很少,本来之前说好每个月要写两篇文章也没能坚持下来,最近在项目中遇到了一些问题,就在这里总结下吧。一些小的技巧而已,大神可以忽略了。
Moya是对Alamofire的再次封装。 我们用一张图来对比一下Alamofire和moya的区别: image 有关Alamofire 为了对Moya有更好的了解。让我们先复习一下Alamofir
相信写过Swift的人应该都知道Alamofire,它是AFNetworking的Swift版本,同一个作者写的。之前在项目中我也一直使用Alamofire,但是升级到Xcode7之后旧版的Alamofire不能用了,最新版的又只支持iOS8之后的系统,而公司项目还得兼容iOS7,所以接下来不打算用它了。
最近项目开发一直在使用 swift,因为 HTN 项目最近会有另外一位同事加入,所以打算对最近涉及到的一些技术和自己的一些想法做个记录,同时也能够方便同事熟悉代码。
Alamofire融合Swift本身的特点,使用起来更加简单方便。下面引用官方Demo,发起一个请求并json解析处理。
你要知道的NSURLSession都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本系列文章主要讲解iOS中网络请求类NSURLSession的使用方法进行详解,同时也会以此为扩展,讲解SDWebImage中图片下载功能的源码分析,讲解AFNetworking相关源码分析。本系列文章主要分为以下几篇进行讲解,读者可按需查阅。 iOS网络——NSURLSession详解及SDWebImage源码解析 iOS网络——SDWebImage
制作导航条 使用网络框架Alamofire 使用 SwiftyJSON iOS10开启启用 HTTP 请求 使用 ObjectMapper 关于 Swift 闭包里面循环引用 封装模块 设置 NSView 的圆角 解决 Xib 无法显示自定义控件从 Xib 加载的问题。 Objective-C 中的 [self class] 用 Swift 怎么表示 关于 prepareForInterfaceBuilder() 方法 解决 NSView 不能显示圆角的问题。 使用 CALayer 设置背景颜色 设置 ContentHeader 右侧试图 制作 文章 页面 数据 的模板 prepareForInterfaceBuilder() 只能设置属性在所属的类里面。 如何设置 NSButton 标题的颜色 使用 Module 名称解决名字冲突问题 NSButton 设置 attributedTitle 之前的对齐方式失效 关于 NSMutableParagraphStyle
一: Swift 网络数据请求与处理最常用第三方 又有时间出来装天才了,还是在学swift,从中又发现一些问题,这两天上网找博客看问题弄的真的心都累。博客一篇写出来,好多就直接照抄,就没有实质性的把问题解决了,只是在发表的博客数量上 + 1 !!真心没意思。。 看看在Swift中是在怎样请求数据,解析数据加载图片这些的,也使我们最基本最常见的用法了,先说说这几个三方库: 第一个: Alamofire (它的原作者就是AFNetworking的原作者,这个就不多说了,你要知道AFNet
背景: 服务器端通过接口返回word文档base64编码字符串 客户端需求是缓存预览分享等 处理思路 请求接口下载base64字符串 base64解码转成Data 在 Document创建文件夹,在文件夹下创建文件 将Data写入文件 使用QuickLook预览,展示。 下载和文件代码 ---- // 下载文件类 // LoadFilesManager.swift // NVRCloudIOS // // Created by Nvr on 2018/12/28. // Copyright ©
swift3.0下使用Alamofire调用Webservice遇到的一些问题以及解决方案。
前言 在移动开发中,发起http请求几乎是每个app必备的功能。今天就用这篇博客记录iOS发起http请求的示例代码。 本文基于swift,使用第三方库Alamofire。 引入第三方库 iOS与Android类似,都会通过一个构建脚本来实现对工程第三方依赖的管理。在Android中这个脚本叫build.gradle。在iOS开发中,这个脚本叫Podfile。我们通过编辑Podfile管理iOS工程的依赖: platform :ios, '8.0' use_frameworks! target 'Hell
上一篇主要介绍了AFNetworkActivityIndicatorManager这个与UIKit相关的类,这一篇主要介绍AFImageDownloader有关图像的下载。
XCTest iOS7的时候就接触了,可是一直也没用起来。起初的我觉得单元格测试纯属鸡肋,我们只能测试单个类的一个函数,还要自己判断期望的结果,进行验证。如果依赖关系复杂,那么就GG了。
我们都知道,app在上线之后,用户如果操作我们的app导致的崩溃、错误信息,我们是无法获知的,这时候,就需要一款工具,来告诉我们现在的app在线上的运行情况; 现在线上信息收集的工具有 友盟、极光等,
今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession。如果你想看权威的NSURLSession的东西,那么就得去苹果官方的开发中心去看了,虽然是英文的,但是结合代码理解应该不难。更详细的信息请移步于苹果官方介绍URL Loading System,网上好多iOS网络编程的博客都翻译于此。因为目前iOS开发中,网络请求大部分使用NSURLSession,所以今天的博客我们就以NSURLSession展开。关于之前使用的NSURLConnection在此就不做过多赘述了
在AlamofireImage中一共就只有5个类加一些扩展 // 错误处理类,继承自Error,主要有requestCancelled(请求取消)、imageSerializationFailed(请求失败)两种错误 AFIError // 定义图片对象,主要用来适配mac(NSImage)和ios(UIImage)平台 Image // 图片内存缓存对象 ImageCache // 图片下载对象(下载基于Alamofire) ImageDownloader // 图片滤镜对象(CoreGraphics切圆
接下来我们需要就是做出这个列表数据,我们可以使用 NSTableView来做出这个效果。
不知道大家有没有看过 WWDC 2015 的视频,其中有一个编号为 408 的视频解释了这个问题,下面是视频链接:Protocol-Oriented Programming in Swift。
在移动开发中,网络层面的监控一直是非常有必要的,比如统计网络接口的失败率、重定向网络请求、网络Request增加公共header头、实现动态域名等等。经常会遇到App某些域名因为一些原因在某些地区DNS解析异常,因此我们需要将这些有问题的域名进行动态替换,让用户可以正常的访问接口,正常使用我们的App。
App开发中,通常我们使用的接口形式有两种,一种是SOAP形式的接口,另一种是Restful形式的接口。相对而言,比较喜欢Restful接口,但是SOAP接口也很常用,调用WebService接口显得有些麻烦,下面使用Alamofire来调用WebService接口。
如在OC中使用AFNetworking一般,Swift我们用Alamofire来做网络库.而Moya在Alamofire的基础上又封装了一层:
当解析错误,我们直接调用传进来的fauler的Block失败返回了,这里有一个self.completionQueue,这个是我们自定义的,这个是一个GCD的Queue如果设置了那么从这个Queue中回调结果,否则从主队列回调。
使用AFNetworking出现报错: error=Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0x7fdfd8729680 {com.alamofire.serialization.response.error.response= { URL: http://172.16.1.31:700
在 swift 环境下开发,网络请求框架最知名就是 Alamofire ,AFN网络请求框架 swift 版本。其强大的功能和多种自定义网络请求,方便性不言而喻。首先来看下在 RxSwift 框架中,其本身也给我们进行的网络请求的封装。如果是在简单的网络请求环境下,可以利用 RxSwift 框架提供的方法来快速实现网络请求响应。 RxSwift框架中,将 URLSession 进行了封装,在 URLSession+Rx.swift文件下,可以找到 RxSwift 为我们提供了四种方法
上面一篇,主要讲述了代理NSURLSessionDownloadDelegate中的三个方法,这一篇我们就看一下AFN自定义代理AFURLSessionManagerTaskDelegate中三个代理转发的实现。
1 import UIKit 2 import Alamofire 3 4 class MyNetworkReachabilityManager { 5 6 private static let sharedInstance = MyNetworkReachabilityManager() 7 var manager = NetworkReachabilityManager(host:“www.baidu.com”) 8 9 init(){ 10 manager?.listener
提高开发效率,降低 Bug 发生率,是我们每个开发所追随的目标。个人认为通过 CocoaPods 实现模块化组件化,积累适合的组件模块,重复利用公用模块,不仅可以提高开发效率并且可以有效的降低 Bug 的发生,另外可以借助Gckit-CLI等脚本工具降低重复无用的代码编写,进一步提高开发效率,降低低级错误的发生,本文以下内容主要讲解个人通过 CocoaPods 结合Gckit-CLI实现开发效率的最大化的一些项目实践
这里很多类,我不会去每一个类单独的去分析,那样子轮着几圈可能也不是很清晰,我会以一个简单的例子入手,开始进行分析,由点带面,最后举一反三给大家串起来。
weex-toolkit 是官方提供的一个脚手架命令行工具,你可以使用它进行 Weex 项目的创建,调试以及打包等功能。
下拉刷新 ZJRefreshControl ZJRefreshControl 下拉刷新 加载更多 Swift 调用方式 //只有下拉刷新 refreshControl = ZJRefreshControl(scrollView: appTableView, refreshBlock: { self.dropViewDidBeginRefreshing() }) //下拉刷新和上拉加载更多 refreshControl = ZJRefreshControl(scrollView: msgT
103 @IBAction func touchupInsideUploadingFileBtnAction(_ sender:AnyObject) { 104 let fileURL = Bundle.main.url(forResource:“tortoise”, withExtension:“png”) 105 Alamofire.upload(fileURL!,to:“https://httpbin.org/post”) 106 .validate() 107 .response
原文: iOS Unit Testing and UI Testing Tutorial,作者:Audrey Tam。更新于2017年3月13日。以下为正文:
二进制流不能附加其他的参数 multipart/form-data形式可以附加其他参数
前言 过去的2016年是一个直播年,各大平台都相继接入了直播频道,电商,社交…更是火了一批做视频的,譬如喵播,映客,都斗鱼等直播平台。全民直播,一下子掀起了直播的技术潮,今天要聊聊如何实现一个ios的
JSON for Modern C++ 是一个开源的 C++ JSON 库,它具有以下主要功能:
上一篇我们基本解除到了Promise的概念,也了解了PromiseKit中的几个基常用的概念,这次我们就来个小实践:
不考虑对上游服务的调用可能失败的所有方式,通常更容易考虑成功请求是什么。它应该是及时的,在期望的格式,并且包含预期的数据。如果我们遵循这个定义,那么其他一切都是某种失败,无论是:
Swift-MVVM 简单演练(一) Swift-MVVM 简单演练(三) Swift-MVVM 简单演练(四) 处理下拉刷新逻辑 根据接口文档,下拉刷新是返回ID比since_id大的微博(即比since_id时间晚的微博)。因此,我们需要在网络请求方法里增加两个参数。since_id和max_id,分别对应下拉刷新所需参数和上拉加载所需参数。 既然要修改网络请求方法,当然是从我们自己抽取的HQNetWorkManager+Extension和HQStatusListViewModel这两个地方入手考虑。
最近在知乎上看到了这个话题:怎样看待程序员不写注释?看了下浏览量居然有 30+w 次,看来大家讨论的挺热闹,我浏览了大部分的回答,发现大家的观点可以归纳为以下几点:
http协议是业务中使用最广泛,开发者接触最多的协议之一。最近笔者我也是因为业务中遇到一些问题,才深入阅读一些源码,带着问题来学习,能学习得更好,更有效果。
在上一期服务端这一章《图文讲透Golang标准库 net/http实现原理 -- 服务端》我们知道了如何进行路由注册,以及服务的注册和请求处理过程了。
众所周知,计算机的资源(内存、磁盘)都是有限的,在编程时,这些资源必须在代码的中的某个地方被关闭释放,以避免造成资源不足而泄露。但开发人员在编写代码时往往会忽略关闭已打开的资源,从而因资源不足导致程序出现异常。
领取专属 10元无门槛券
手把手带您无忧上云