SwiftNet 项目中可直接使用的网络请求库

##Request

GitHub

采用链式调用配置Request

Request(url: "https://api.github.com/users/FengDeng").method(.GET).parameters(["":""]).headers(["":""])……

请求前参数验证

Request(url: "https://api.github.com/users/FengDeng")
    .beforeValidate({print("验证前先配置一些东西哈")})
    .validate({throw NSError(domain: "validate error", code: -1, userInfo: nil)})
    .beforeRequest({print("我要请求啦")})
    .responseJSON(User)
    .subscribeNext { (user) -> Void in
        print(user.avatar_url)
}    

所有的闭包都可以直接抛出异常,一直走到Response的error里处理

A GitHub API by RxSwift

###一个用RxSwift实现的GitHubAPI库

仓库地址 https://github.com/FengDeng/RxGitHubAPI

这个库还未完善,由于最近工作比较忙,刚刚实现小部分的功能。

也希望大家pull request 来完善它

目前实现的功能:

  1. 登录
  2. 获取一个用户信息(自己的或者别人的)
  3. 获取这个用户的其他信息,请看 #YYUser
  4. star,unStar,checkStar等等对仓库的一些行为,请看#YYRepository
  5. search Repos 和 search Users

RxSwift Observable之Empty,Map的实现

上一节说了Observable这个超类的设计,本节内容来浅析下它的众多子类中的两个的实现

##Empty
先看下一个sample

example("empty") {
let emptySequence = Observable<Int>.empty()

let subscription = emptySequence
    .subscribe { event in
        print(event)
    }
}

//输出
--- empty example ---
Completed

Observable初始化一个类型为Int的Observable实例,来看看empty()方法

public static func empty() -> Observable<E> {
    return Empty<E>()
}

RxSwift系列之Observable

流,信号,阀门,水管,水珠,漏斗,等等。这些名词都被大家用到RxSwift上,应该都了解,这里就不详细说了。
下面简单的梳理下RxSwift中的半壁江山,Observable

Observable 是一个泛型类

public class Observable<Element> : ObservableType

其实现了ObservableType协议

public protocol ObservableType : ObservableConvertibleType{
    typealias E    
    ....
}

ObservableType是一个泛型协议

CocoaAsyncSocket源码解读

###先看看文件结构:
├── CocoaAsyncSocket.h
├── GCD
│ ├── GCDAsyncSocket.h
│ ├── GCDAsyncSocket.m
│ ├── GCDAsyncUdpSocket.h
│ └── GCDAsyncUdpSocket.m
└── RunLoop
├── AsyncSocket.h
├── AsyncSocket.m
├── AsyncUdpSocket.h
└── AsyncUdpSocket.m
一共9个文件

CocoaAsyncSocket.h没什么说的,只是import了所有的头文件。

根据作者的目录很容易可以看出来,作者提供了两套异步socket接口,一套基于GCD,一套基于RunLoop