Swift語法知識小記

  • 不讓動畫自動停止方法
  • 隱藏界面會讓界面上的動畫消失徙垫。
let anim = CABasicAnimation(keyPath:"transfrom.rotation")
     
//    設(shè)置結(jié)束后不移除動畫
anim.isRemovedOnCompletion = false
  • 判斷文本輸入框不為空格以及空
func spaceStringAndEmptyString() -> Bool{
        let str = self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
        if str.characters.count == 0{
            return true // 為空
        }else {
            return false // 不為空
        }
    }
    
  • 顏色轉(zhuǎn)RGB方法
func colorFromARGB(_ value: Int32) -> UIColor {
        let alpha = CGFloat(((0xff << 24) & value) >> 24) * 1.0 / 255.0
        let red = CGFloat(((0xff << 16) & value) >> 16) * 1.0 / 255.0
        let green = CGFloat(((0xff << 8) & value) >> 8) * 1.0 / 255.0
        let blue = CGFloat(0xff & value) / 255.0
        
        return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
    
func colorFromRGB(_ value: Int32) -> UIColor {
        let red = CGFloat(((0xff << 16) & value) >> 16) * 1.0 / 255.0
        let green = CGFloat(((0xff << 8) & value) >> 8) * 1.0 / 255.0
        let blue = CGFloat(0xff & value) / 255.0
        
        return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
}
    
func colorFromRGB(_ value: Int32, withAlpha alpha: CGFloat) -> UIColor {
        let red = CGFloat(((0xff << 16) & value) >> 16) * 1.0 / 255.0
        let green = CGFloat(((0xff << 8) & value) >> 8) * 1.0 / 255.0
        let blue = CGFloat(0xff & value) / 255.0
        
        return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
}


  • 函數(shù)作為返回值
func makeIncrementer() -> ((Int) -> Int) {
    func addOne(number: Int) -> Int {
        print(number)
        return 1 + number
    }
    return addOne
}

var increment = makeIncrementer() // 這里將addOne函數(shù)返回回來

increment(8) // 實際調(diào)用addOne函數(shù)
  • 閉包的使用
var numbers = [20, 19, 7, 12]

numbers.map({
    (number: Int) -> Int in
    let result = 3 * number
    return result
})

  • 關(guān)于swift拋出錯誤與處理
// 錯誤的枚舉
enum PrinterError: Error {
    case outOfPaper
    case noToner
    case onFire
}


func send(job: Int, toPrinter printerName: String) throws -> String {
    if printerName == "Never Has Toner" {
        // 在這里如果條件成立,拋出錯誤
        throw PrinterError.noToner
    }
    return "Job sent"
}

// 在do中 try可能出錯的函數(shù)密末,如果throw出錯誤救鲤,就在catch中處理錯誤
do {
    let printerResponse = try send(job: 1040, toPrinter: "Never Has Toner")
    print(printerResponse)
} catch {
    print(error)
}

// 也可以用這種方法來try  如果拋出錯誤痘拆,則返回nil氢橙,否者返回函數(shù)返回值
let printerSuccess = try? send(job: 1884, toPrinter: "Mergenthaler")
let printerFailure = try? send(job: 1885, toPrinter: "Never Has Toner")


  • 枚舉的高級用法
enum Suit {
    case Spades, Hearts, Diamonds, Clubs
    func simpleDescription() -> String {
        switch self {
        case .Spades:
            return "spades"
        case .Hearts:
            return "hearts"
        case .Diamonds:
            return "diamonds"
        case .Clubs:
            return "clubs"
        }
    }
}

// 設(shè)置枚舉的屬性
let hearts = Suit.Hearts
// 根據(jù)枚舉屬性不同調(diào)用不同方法
let heartsDescription = hearts.simpleDescription()

  • 關(guān)于defer

使用defer代碼塊來表示在函數(shù)返回前叫搁,函數(shù)中最后執(zhí)行的代碼甩鳄。無論函數(shù)是否會拋出錯誤逞度,這段代碼都將執(zhí)行。使用defer妙啃,可以把函數(shù)調(diào)用之初就要執(zhí)行的代碼和函數(shù)調(diào)用結(jié)束時的掃尾代碼寫在一起档泽,雖然這兩者的執(zhí)行時機截然不同。

var fridgeIsOpen = false
let fridgeContent = ["milk", "eggs", "leftovers"]

func fridgeContains(_ food: String) -> Bool {
    fridgeIsOpen = true
    defer {
        fridgeIsOpen = false
    }
    
    let result = fridgeContent.contains(food)
    return result
}
fridgeContains("banana")
print(fridgeIsOpen)
  • swift中泛型
func repeatItem<Item>(repeating item: Item, numberOfTimes: Int) -> [Item] {
    var result = [Item]()
    for _ in 0..<numberOfTimes {
        result.append(item)
    }
    return result
}
repeatItem(repeating: "knock", numberOfTimes:4) // 結(jié)果為["knock","knock","knock","knock"]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末揖赴,一起剝皮案震驚了整個濱河市馆匿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌燥滑,老刑警劉巖渐北,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異铭拧,居然都是意外死亡赃蛛,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門搀菩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焊虏,“玉大人,你說我怎么就攤上這事秕磷∷斜眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疏尿。 經(jīng)常有香客問我瘟芝,道長,這世上最難降的妖魔是什么褥琐? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任锌俱,我火速辦了婚禮,結(jié)果婚禮上敌呈,老公的妹妹穿的比我還像新娘贸宏。我一直安慰自己,他們只是感情好磕洪,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布吭练。 她就那樣靜靜地躺著,像睡著了一般析显。 火紅的嫁衣襯著肌膚如雪鲫咽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天谷异,我揣著相機與錄音分尸,去河邊找鬼。 笑死歹嘹,一個胖子當(dāng)著我的面吹牛箩绍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尺上,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼材蛛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尖昏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤构资,失蹤者是張志新(化名)和其女友劉穎抽诉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吐绵,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡迹淌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了己单。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唉窃。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纹笼,靈堂內(nèi)的尸體忽然破棺而出纹份,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布蔓涧,位于F島的核電站件已,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏元暴。R本人自食惡果不足惜篷扩,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茉盏。 院中可真熱鬧鉴未,春花似錦、人聲如沸鸠姨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽享怀。三九已至羽峰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間添瓷,已是汗流浹背梅屉。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鳞贷,地道東北人坯汤。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像搀愧,于是被迫代替她去往敵國和親惰聂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫咱筛、插件搓幌、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評論 25 707
  • 提心吊膽了這么久,終于在晚上九點半的樣子在學(xué)校官網(wǎng)上查到了錄取結(jié)果迅箩! 告訴了媽媽溉愁,琨琨,西坪哥饲趋,哥哥姐姐和表叔拐揭。 ...
    陳曉queen閱讀 129評論 0 0
  • 人生三不斗: 不與君子斗名讨衣;不與小人斗利;不與天地斗巧扒披。 人生三不爭: 不與上級爭鋒值依;不與同級爭寵;不與下級爭功碟案。...
    憶往昔926閱讀 452評論 0 6
  • 這次回家愿险,我發(fā)現(xiàn),當(dāng)笨笨休息的時候价说,我能悄悄走到它后面嚇?biāo)幌铝肆究鳎抑溃娴睦狭恕?/div>
    小鋅516閱讀 41評論 0 0