數組,字典,集合swift
var arr = [] var dict = {1:"a"} var B:Set<Int> = [] var C = Set<Int>([])
集合的交集、並集、減集,異或操做api
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
聲明類型:ide
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纔是按地址傳遞ui
func的參數默認是常量參數,要加var
在前面才變成變量參數,也就是說能夠在func內更改參數值spa
func test(a:String, var b :Int){ b = a.toInt()! }
也就是說,默認的參數是以let
來聲明的。指針
另外,默認無論參數是什麼類型的,都是傳值的,要想實現傳地址的傳參,那麼要使用inout
code
func test(inout a:String, inout b :Int){ a = "100" b = 200 }
在調用的時候要加個&
在前面調用:component
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之間傳遞值
一、爲View綁定一個Controller:新建一個swift文件做爲controller,而後copy原有的controller原始模板代碼過來,而後在View的屬性面板選擇好它的Class 二、在傳遞數值的Controller,重寫它的這個方法:override func prepareForSegue
segue.identifier
來標識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 } }