又是週五了,週末不要浪,一塊兒學點Swift!本週再次爲你們帶來了一些Swift的小技巧,都是些奇淫巧計,不知道也無妨,但Swift最吸引個人一點就是它的簡潔易用。主要內容有:git
private(set)
語法String
類型初始化方法簡化UITableViewCell
的reuseIdentifier
我爲這篇博客製做了一個demo,您能夠去在個人github上clone下來:SwiftTips,若是以爲有幫助還望給個star以示支持。github
出於代碼安全性的考慮,若是一個類的屬性不會被其餘類使用,那麼能夠把它聲明爲private
。更進一步咱們可使用private(set)
關鍵字告訴編譯器,這個類對外可讀可是不可寫,好比:swift
// In other swift file
struct Person {
private(set) var name = "Unknown"
}
// In main.swift
// 能夠獲取name屬性的值
print(person.name)
// 報錯,不能在PrivateSet.swift文件外對name屬性賦值
//person.name = "newName"
複製代碼
這個屬性只能在文件內部被讀寫,即便是在結構體的定義外也能夠。可是在別的文件中就不能對其賦值了。安全
須要強調的一點是,只有private(set)
關鍵字,並無private(get)
關鍵字。函數
分號在Swift中幾乎退出了歷史舞臺,但在某些狀況下使用分號也是不錯的選擇。學習
假設在函數的開頭有一個guard
判斷,若是判斷不成立則退出函數,並輸出一些調試信息,過去的版本能夠這樣寫:ui
func doSomething() {
let error: AnyObject? = nil
guard error == nil
else {
print("Error information")
return
}
}
複製代碼
若是使用分號,能夠簡化代碼,它把代碼壓縮在一行語句中,簡潔又不失可讀性:spa
func doSomething() {
let error: AnyObject? = nil
guard error == nil else { print("Error information"); return }
}
複製代碼
給cell一個reuseIdentifier
是一件挺麻煩的事情,首先不能瞎起名字,好比let reuseIdentifier = "reuse"
。一旦同一個UITableView
中有兩種或更多cell,事情就比較麻煩了。調試
這就要求咱們爲reuseIdentifier
賦值是要考慮到字符串的具體含義,好比代碼多是這樣的:code
let reuseIdentifier = "TableViewCommentCellIndentifer"
複製代碼
做爲一個喜歡偷懶的人,爲了節省起名字以及輸入這些字符串的時間,咱們徹底能夠這樣寫:
let reuseIdentifier = String(TableViewCell)
複製代碼
這裏的TableViewCell
是自定義的UITableViewCell
的子類,把它傳入字符串的構造函數中獲得的結果是"TableViewCell",一切顯得那麼和諧簡介。
關於字符串初始化函數的規則,能夠參考個人這篇文章:你其實真的不懂print("Hello,world")
對於一些相互有關聯的變量,相比於在每行中聲明一個,還有一種更簡潔美觀的方式:
var (top, left, width, height) = (0.0, 0.0, 100.0, 50.0)
//rect.width = width
複製代碼
好吧,我認可上一個tip的實用性不是很強,有點湊數字之嫌,下面重點介紹一些調試方面的技巧做爲補償。
可能不少人都知道使用斷點可以大幅度提升開發效率,其實Xcode斷點還有更多的功能值的發掘。好比咱們能夠在觸發斷點時不終止程序運行(若是不須要單步調試的話):
勾選最後一個選項後,程序就不會在斷點處終止了。
其餘的幾個選項也頗有用處,第一個表示在什麼狀況下才會觸發斷點,第二個選項表示前幾回不觸發斷點。
在Action選項中,咱們能夠選擇觸發斷點時的執行事件,好比這裏我加入了播放聲音,以及向控制檯打印字符串"This is a message to console",同時還會調用調試命令p i
,表示輸出i的值:
func customDebug() {
for i in 1..<10 {
// 這裏加斷點
}
}
複製代碼
代碼運行後的結果是:
(Int) $R8 = 9
This is a message to console
複製代碼
若是您運行了demo,還會聽到清脆的「叮」的一聲。
更多好文敬請關注我和@Martin_wjl共同維護的專題——每週學點Swift,每週五更新幾篇精選教程,輕鬆學習Swift。