您的位置:首页 > 移动开发 > Swift

swift的学习笔记

2015-09-05 23:37 351 查看
数组,字典,集合

var arr = []
var dict = {1:"a"}
var B:Set<Int> = []
var C = Set<Int>([])

集合的交集、并集、减集,异或操作

var a = Set<Int>([1,2,3])
var b = Set<Int>([2,3,4])

a.intersect(b) // -> {2,3}
a.union(b)  // -> {1,2,3,4}
a.subtract(b) // -> {1}
b.exclusiveOr(b) // -> {1,4}

枚举的Integer的递增属性:

enum test:Int{
case a=1, b, c, d, e, f, g
}

let c:test = .c
c.rawValue // -> 3

声明类型:

enum test {
case a(Int, String) // ->声明了一个turple
case b(String) // -> 声明了一个String
}
let a = test.a(100, "ok")
let b:test = .b("soso")

注意的是,swift里的turple, array, dictionary都是按值传递的,而function, closure才是按地址传递

func的参数默认是常量参数,要加
var
在前面才变成变量参数,也就是说可以在func内更改参数值

func test(a:String, var b :Int){
b = a.toInt()!
}

也就是说,默认的参数是以
let
来声明的。

另外,默认不管参数是什么类型的,都是传值的,要想实现传地址的传参,那么要使用
inout


func test(inout a:String, inout b :Int){
a = "100"
b = 200
}

在调用的时候要加个
&
在前面调用:

var a = "300"
var b = 300
test(&a, &b)

数组的遍历,同时获取index,和key

var arr = [1,23,3]

for (index, item) in enumerate(arr) {
println(index)
println(item)
}

引入Foundation使用更多字符串的功能

import Foundation

var str = "Hello, kobe"

str.capitalizedString
str.uppercaseString
str.lowercaseString

// 等于.trim()
str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

//等于.trimBy([" ","!",","])
str.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: " !,"))

// 等于js的split(" ")
str.componentsSeparatedByString(" ")

// 等于js的split(" "),split("!"),split(",")
str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: " !,"))

// join方法
var str2 = "-"
str2.join(["2005","08","11"])

聚合运算符

a ?? b // 等于 nil != a ? a! : b

生成一个唯一的ID,uuid

func getUUID() -> String {
let uuid = NSUUID().UUIDString
return uuid
}

如何对输入框实现点击空白处和return键收起键盘
首先继承"UITextFieldDelegate"类,
再绑定view,
inputItem.delegate = self

然后加上下面俩方法:

func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}

override func touchesEnded(touches: NSSet, withEvent event:UIEvent){
inputItem.resignFirstResponder()
}

class和struct的区别是,struct是放在stack里,class是放在heap,所以struct是值传递,整个复制,class是指针传递

自动给view添加constraints

首先得保证你的项目开启了AutoLayout
在storyboard里选中view,然后点击在视图底部第3个按钮"resolve auto layout issues"即可

在ViewController之间传递值

1、为View绑定一个Controller:新建一个swift文件作为controller,然后copy原有的controller原始模板代码过来,然后在View的属性面板选择好它的Class
2、在传递数值的Controller,重写它的这个方法:
override func prepareForSegue


定义好segue的标识符,并在代码上用
segue.identifier
来标识

取segue的目标:
var vc = segue.destinationViewController as TargetViewController
,在vc变量里给属性赋值就等于传递数值了

修改结构体或者枚举的属性,使用mutating

struct Point{
var x = 0.0, y = 0.0
mutating func moveByX(deltaX:Double, y deltaY:Double){
x+= deltaX
y+= deltaY
}
}

而类class是不用mutating

class pp {
var x = 0.0

func change(xx: Double) {
x = x + xx
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift