swift的學習筆記

數組,字典,集合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來聲明的。指針

另外,默認無論參數是什麼類型的,都是傳值的,要想實現傳地址的傳參,那麼要使用inoutcode

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的標識符,並在代碼上用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
  }
}
相關文章
相關標籤/搜索