版本:Objective-C

版本:Objective-C

github排名 https://github.com/trending,github搜索:https://github.com/search

主要工作说明:

  1. 重新整理了Xcode好用的插件,信息更详细和完整,直接搜索@“Xcode插件@”。(已经完成)

使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性。

引入评价机制:根据作者们的主管评价,对库是用”赞”、“很赞”、“非常赞”这3个评价伺候,便于大家在初次选择库时有一个选择依据。

问题反馈:请广大网友只按照目录结构(即使目录结构有问题)添加三方库,并pull request。目录问题大家提出issues后楼主会及时更改的。

目录

iOS、mac开源项目及库

TimLiu-iOS

========
自己总结的iOS、mac开源项目及库,持续更新。。。。
github排名 https://github.com/trending,github搜索:https://github.com/search

目录

元组

元组

元组(tuples) 把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。

下面这个例子中,(404, "Not Found")是一个描述 HTTP 状态码(HTTP status code)的元组。HTTP 状态码是当你请求网页的时候 web 服务器返回的一个特殊值。如果你请求的网页不存在就会返回一个404 Not Found状态码。

1
2
let http404Error = (404, "Not Found")
// http404Error 的类型是 (Int, String),值是 (404, "Not Found")

(404, “Not Found”)元组把一个Int值和一个String值组合起来表示 HTTP 状态码的两个部分:一个数字和一个人类可读的描述。这个元组可以被描述为“一个类型为(Int, String)的元组”。

你可以把任意顺序的类型组合成一个元组,这个元组可以包含所有类型。只要你想,你可以创建一个类型为(Int, Int, Int)或者(String, Bool)或者其他任何你想要的组合的元组。

输入输出参数

输入输出参数

输入输出参数(In-Out Parameters)

函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误。这意味着你不能错误地更改参数值。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数(In-Out Parameters)。

定义一个输入输出参数时,在参数定义前加 inout 关键字。一个输入输出参数有传入函数的值,这个值被函数修改,然后被传出函数,替换原来的值。想获取更多的关于输入输出参数的细节和相关的编译器优化,请查看输入输出参数一节。

你只能传递变量给输入输出参数。你不能传入常量或者字面量(literal value),因为这些量是不能被修改的。当传入的参数作为输入输出参数时,需要在参数名前加&符,表示这个值可以被函数修改。

注意
输入输出参数不能有默认值,而且可变参数不能用 inout 标记。
下面是例子,swapTwoInts(_:_:) 函数,有两个分别叫做 a 和 b 的输入输出参数:

在Swift中检查API的可用性

Swift 2改进了检查API可用性的方法,使其更加容易、安全。

回顾Objective-C的方法

在看Swift之前,让我们简要回顾一下我们之前用Objective-C检查SDK可用性的方法。

检查类和框架的可用性

iOS 9作为一个重要的版本,引进了许多新的框架。但如果你部署版本低于iOS 9,你需要弱连接(weak link)这些新框架,然后在运行时检查其类的可用性。例如:如果我们想在iOS 9中使用新的联系人框架(Contacts framework),而在iOS 8中使用旧的通讯录框架(AddressBook framework):

解析JSON并且字典转模型以及如何在项目内用

1、SwiftyJSON+Alam导入到项目内

2、由于Alam发送POST请求是异步的不能及时返回数据,要把Alam简单封装下,让他能够及时返回数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func httpsPost(success:((json:AnyObject)->Void)?,failure:((error:NSError)->Void)?){
Alamofire.request(.POST).responseJSON(options: NSJSONReadingOptions.MutableContainers) { (request, response, json, error) -> Void in
if error == nil {
if success != nil {
println(json)
success!(json: json!)
}
} else {
if failure != nil {
failure!(error: error!)
}
}
}
}

第一个参数url为网络地址,后面success为请求成功的闭包,第二个failure为请求失败的闭包

第一行为Alam自带的request封装好的发送网络请求的方法,POST请求以及url。后面的responesJSON这个并不是Alam自带的,而是依靠SwiftyJSON的一个解析返回数据的JSON方法,options那个没太注意是干嘛的而且我也没用到过,后面request,response,json,error,前两个对数据来说没啥用,json就是咱要取的发送post请求以后后台返回的数据,如果返回失败(譬如url请求错误、或者参数不对又或者哪里有错误)error为一个错误信息。

MVVM

MVVM

MVVM 是 Model-View-ViewModel 的简写,MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model)

MVC 回顾

  • MVC 结构图

image

  • MVC 存在的问题
    • 模型的代码很少
    • 控制器的代码一不小心就越来越多
    • 不好测试