swift3.0 - 真的很簡單
swift3.0 - 資料型別
swift3.0 - array
swift3.0 - 字典
swift3.0 - 可選值
swift3.0 - 集合
swift3.0 - 流控制
swift3.0 - 物件和類
swift3.0 - 屬性
swift3.0 - 函式和閉包
swift3.0 - 初始化和釋放
swift3.0 - 協議protocol
swift3.0 - 類和結構體的區別
swift3.0 - 列舉
swift3.0 - 擴充套件
swift3.0 - 下標
swift3.0 - 泛型
swift3.0 - 異常錯誤
swift3.0 - 斷言
swift3.0 - 自動引用計數(strong,weak,unowned)
swift3.0 - 檢測api
swift3.0 - 物件的標識
swift3.0 - 注釋
swift3.0 - 元型別
swift3.0 - 空間命名
swift3.0 - 物件判等
swift3.0 - **self的用途
swift3.0 - 類簇
swift3.0 - 動態呼叫物件(例項)方法
swift3.0 - 文字輸出
swift3.0 - 黑魔法swizzle
swift3.0 - 映象
swift3.0 - 遇到的坑
enum osuserloginerror :error
注意異常列舉型別必須遵守error 協議error 是協議
錄入學生成績,如果輸入的成績不在0...100 丟擲異常執行結果:// 定義錯誤協議
enum scoreinputerror:error
// 定義含有異常機制的函式
func inputstudentname(name:string,score:float)throws ->boolelse if score > 100
// 開始錄入
// 錄入結束
return true
}// 呼叫函式
do catch scoreinputerror.lowzero(let name,let score)catch scoreinputerror.highhundred(let name,var score)
異常:張丹的成績為300.0 -- 大於1000使用者輸入的密碼或者使用者名為空丟擲異常,如果是密碼為空,輸入密碼為空的使用者執行結果:// 定義異常
enum osuserloginerror :error
// 定義含有異常機制的函式
func verifyusername(username:string,password:string)throws -> boolelse if (username == "" && password != "")else if (username != "" && password == "")
return true
}// 使用含有異常的函式
docatch osuserloginerror.passwordempty(let username) catch osuserloginerror.usernameempty catch
使用者:酷走天涯輸入的密碼為空enum errortype:error
func inputscore(score:int) throws->boolelse if score > 100
return true
}do catch errortype.error(let x) where x == 0catch
執行結果:// 定義錯誤協議
enum studenterror:error
// 定義學生類
class student
print("第1步 丟擲異常")
throw studenterror.nameempty
}self.name = name
} }
// 呼叫函式
docatch
第1步 丟擲異常注意第2步發生異常清理記憶體
nameempty
1.類中使用defer,在物件方法中,使用defer,在defer塊中,呼叫屬性之前,必須初始化所有儲存屬性,重要事說三遍,所有的儲存屬性,所有的,儲存屬性a.try2.defer 在定義的當前作用域最後一步執行
執行結果:let student = try student(name: "")
print("執行結果\(student)")
第1步結論:第2步發生異常清理記憶體
我們發現print("執行結果(student)") 這句**沒有執行,說明發生了異常,後面的**不會執行,但沒有報錯提示b.try!執行結果:let student = try! student(name: "")
print("執行結果\(student)")
結論:
一旦發生異常,系統會報錯,後面的**不再繼續執行c.try?執行結果:let student = try? student(name: "")
print("執行結果\(student)")
第1步第2步發生異常清理記憶體
執行結果nil
執行結果:let student = try? student(name: "234")
print("執行結果\(student)")
執行結果optional(student)結論:try? 如果發生異常則返回nil,如果沒有發生異常,則返回可選值,我們在使用時,需要解包可選值!應用1:請求:public enum osneterror:error
/// 響應錯誤異常
public enum responseerror:int
}
應用2: 如果你要使用的值有可能為nil,你最好的寫法應該像下面這樣func requesturl(url:url)throws
}
guard let filter = cifilter(name: "cigaussianblur",
withinputparameters: parameters) else
Swift3 0 錯誤處理 try
import uikit class viewcontroller uiviewcontroller let data jsonstring.data using utf8 反序列化 throw 丟擲異常 方法一 推薦 try?如果解析成功就有值,否則為 nil let json try?jsons...
Swift3 0 建構函式
viewcontroller.swift import uikit 在swift中,同乙個專案中 同乙個命名空間 所有的類預設都是共享的,不需要引用,可以直接訪問,不需要import 所有物件的屬性 var,也可以直接訪問到 class viewcontroller uiviewcontroller...
Swift3 0 空間命名
swift3.0 真的很簡單 swift3.0 資料型別 swift3.0 array swift3.0 字典 swift3.0 可選值 swift3.0 集合 swift3.0 流控制 swift3.0 物件和類 swift3.0 屬性 swift3.0 函式和閉包 swift3.0 初始化和釋放...