swift中第三方网络请求库Alamofire的安装与使用

Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire。下面我们就介绍一个这个库的安装与使用。

一、安装包管理工具CocoaPods

由于国内容易被墙,速度也非常的慢,这里我们使用提供的源 http://ruby.taobao.org/

gem sources --remove https://rubygems.org/
gem sources –a http://ruby.taobao.org/
gem sources –l

ruby-taobao

先使用下面命令升级Ruby版本:

gem update --system

等待更新完成后。 Continue reading

iOS9中提示框UIAlertController的用法

 

import UIKit

class ViewController: UIViewController {

//按钮的点击事件

@IBAction func clickedBtn(sender: AnyObject) {

//print("click ok")

let btnAlert = UIAlertController()

btnAlert.title = "系统提示";

btnAlert.message = "这已经点击过了这个按钮"

 

//cancel按钮

let cancelAction = UIAlertAction(title: "cancel", style: UIAlertActionStyle.Cancel, handler: nil)

 

//ok按钮

let okAction = UIAlertAction(title: "ok", style: UIAlertActionStyle.Default){

(action: UIAlertAction!) -> Void in

print("you choose ok")

}

 

//将提示信息与用户扣作行为绑定

btnAlert.addAction(cancelAction)

btnAlert.addAction(okAction)

 

//

self.presentViewController(btnAlert, animated: true, completion: nil)

 

}

 

 

override func viewDidLoad() {

super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

}

ios8中action segue

os8 action segue 有几种方法,一般选择哪一个,每种方法都有什么用,在什么环境下使用?

57_400607_5f360e47ff35d47

Apple的解释在这里: https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html
我的翻译:
Show: 在master或detail区域展现内容(典型的如iPad的设置界面,左侧是master,右侧是detail),究竟是在哪个区要取决于屏幕上的内容,如果不分master/detail,就单纯的把新的内容push到当前view controller stack的顶部
Show Detail: 大致同Show,在detail区域展现内容,如果不分master/detail,新的内容取代当前view controller stack的顶部
Present Modally:模态展示内容
Present as Popover:在当前的view上出现一个小窗口来展示内容,无处不在的“选中文字后出现 复制/翻译 按钮就是这个
Custom:自定义的

swift中的委托delegate的理解

对象.delegate=self是啥意思
委托的意思就是将自己的任务交给其他人去做!

对象.delegate=self的意思就是对象的任务交给self去做 对象!=self

假如你有对象A 对象B

A是B的成员变量

class B {

member A

}

在B中写这么一句“A.delegate=self

就是将对象A的任务交给self(这里是B)去完成(默认情况下是由A来完成还是???,通过在class B中重写class A 中的一些与对象相关的方法函数来实现。)

其实还有两方面的理解:
1.委托是继承的一种实现。比如A委托 给B , B实现了A中的方法。有点类似B继承了A。
2.委托方法能够读取被委托对象的属性和方法,这点可以部分解答了你问的“委托必要性”。

比如A委托 给B,在B中实现的委托方法就可以像A中的其他方法一样访问B中的属性。

官方文档:http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/21_Protocols.html#delegation

委托是一种设计模式(译者注: 想起了那年 UITableViewDelegate 中的奔跑,那是我逝去的Objective-C。。。),它允许结构体将一些需要它们负责的功能交由(委托)给其他的类型的实例。

委托模式的实现很简单: 定义协议封装那些需要被委托的函数和方法, 使其遵循者拥有这些被委托的函数和方法

委托模式可以用来响应特定的动作或接收外部数据源提供的数据,而无需要知道外部数据源的所属类型(译者注:只要求外部数据源遵循某协议)。

let tracker = DiceGameTracker()
let game = SnakesAndLadders()
game.delegate = tracker //委托给tracker对象处理
game.play()

swift中的构造过程(Initialization)

http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/14_Initialization.html

本页包含内容:

构造过程是为了使用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务。

构造过程是通过定义构造器(Initializers)来实现的,这些构造器可以看做是用来创建特定类型实例的特殊方法。与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。

类实例也可以通过定义析构器(deinitializer)在类实例释放之前执行特定的清除工作。想了解更多关于析构器的内容,请参考析构过程Continue reading

Swift中的标准函数

Swift中共有74个内建函数,但是在Swift官方文档(“The Swift Programming Language”)中只记录了7中。剩下的67个都没有记录。
本文将列举Swift所有的内建函数。本文中提到的所谓的内建函数是指那些在Swift中不需要导入任何模块(如Foundation等)或者引用任何类就可以使用的函数。
abs(signedNumber): 返回给定的有符号数字的绝对值。很简单,但是没有在文档中记录。
  1. abs(-1) == 1 
  2. abs(-42) == 42 
  3. abs(42) == 42 

Continue reading

Swift中的柯里化函数

柯里化函数(curried function)的类型相当于一个嵌套函数类型。例如,下面的柯里化函数addTwoNumber()()的类型是Int -> Int -> Int

func addTwoNumbers(a: Int)(b: Int) -> Int{
    return a + b
}
addTwoNumbers(4)(5)      // returns 9

柯里化函数的函数类型从右向左组成一组。例如,函数类型Int -> Int -> Int可以被理解为Int -> (Int -> Int)——也就是说,一个函数传入一个Int然后输出作为另一个函数的输入,然后又返回一个Int。例如,你可以使用如下嵌套函数来重写柯里化函数addTwoNumbers()()

func addTwoNumbers(a: Int) -> (Int -> Int){
    func addTheSecondNumber(b: Int) -> Int{
        return a + b
    }
    return addTheSecondNumber
}
addTwoNumbers(4)(5)     // Returns 9

http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter3/03_Types.html