Swift:漂亮的 print() Pt.1

作者:Andyy Hope捧毛,原文鏈接观堂,原文日期:2016-04-06
譯者:SketchK;校對(duì):Crystal Sun呀忧;定稿:CMB

時(shí)尚日志师痕,由你做主

自從 Swift 的 beta 版本誕生后,社區(qū)里那些富有探索精神的開(kāi)發(fā)者就迫不及待地在 Swift 的學(xué)海中遨游而账,他們不遺余力地去探索 Swift 的潛力胰坟,同時(shí)交流分享他們從中得到的經(jīng)驗(yàn)。

此前泞辐,在 Twitter 上搜索 Swift笔横,大部分都充斥著關(guān)于 Taylor Swift 的搜索結(jié)果竞滓,以至于我無(wú)法從中列舉出有用的信息,但搞笑的是吹缔,沒(méi)人知道為什么時(shí)至今日商佑,Twitter 上檢索到的信息仍是 Taylor Swift(呵呵……)。另一件人們普遍提及到的 Swift 特性便是:Swift 代碼現(xiàn)在可以對(duì) Emoji 表情進(jìn)行處理厢塘。

func combinedWeatherConditions(lhs: Int, _ rhs: Int) -> Int {
    return lhs + rhs
}
let ?? = -10, ?? = 10, ?? = 0
if combinedWeatherConditions(??, ??) == ?? {
    print(“?? — No ?? Today.”)
}

“我完全是因?yàn)?emoji 這個(gè)功能而開(kāi)始使用 Swift”- 沒(méi)有人茶没,從來(lái)就沒(méi)人這么做

這是一個(gè)很新穎的功能,或者說(shuō)是增強(qiáng)點(diǎn)俗冻,但是你不大會(huì)將這些 emoji 添加到你的代碼甚至打印語(yǔ)句中礁叔。既然說(shuō)到了打印語(yǔ)句,就不得不說(shuō)一下迄薄,相比較 NSLog 而言琅关,新的 print 調(diào)試語(yǔ)句在功能上做了很人性化的簡(jiǎn)化。

NSLog

作為初級(jí)調(diào)試的主力讥蔽,NSLog 簡(jiǎn)單易用涣易,如果想查明某個(gè)值或者在 runtime 中通知開(kāi)發(fā)者某些事件,NSLog 絕對(duì)是第一選擇冶伞,可以打印出你所關(guān)心的任意信息或任意對(duì)象新症。但在我看來(lái),默認(rèn)的 NSLog 信息里面包含了太多的無(wú)用信息:

2016–04–02 09:15:25.660 Blog_Print[13053:3567169] Hello, cruel world. Why don’t you love me? Whyyy!!!

不要誤會(huì)我响禽,我認(rèn)為原本負(fù)責(zé) NSLog 的工程師的本意是將其打造成一個(gè)優(yōu)秀的日志輸出工具徒爹,其格式可細(xì)分為:

[Date stamp] [Time stamp] [Project name] [Process ID: Thread ID] [Message]

但是,對(duì)于大多數(shù)類型的輸出日志來(lái)說(shuō)芋类,這些信息實(shí)在太多了隆嗅。日期,時(shí)間戳侯繁,線程和進(jìn)程的標(biāo)識(shí)符占距了大量空間胖喳,尤其在你恰巧把控制臺(tái)放在 Xcode 底部中間且靠右的地方時(shí),由于控制臺(tái)的空間非常有限贮竟,就顯得這些信息更長(zhǎng)了丽焊。

print

精簡(jiǎn) NSLog 輸出的理由無(wú)須再說(shuō)了,而我們想要的就是讓它剔除冗余的內(nèi)容咕别,只展現(xiàn)出最原始的信息技健。

Hello, beautiful world! I love you.

但或許,或許有那么一點(diǎn)惰拱,我們把它弄的太簡(jiǎn)單了... 我知道你在想什么雌贱,但請(qǐng)暫且忍耐一下,讓我把話說(shuō)完。

“這個(gè)家伙剛才抱怨 NSLog 打印的太多了帽芽,現(xiàn)在又嫌它打印的太少了?呵呵呵... 這樣的家伙實(shí)在是太難伺候了翔冀〉冀郑“ - 你

就像穿衣打扮一樣,不同的服裝適合不同的場(chǎng)合或目的纤子。就好比你不會(huì)在雪地里穿短褲和背心玩耍搬瑰,對(duì)不對(duì)?

打印本身并不應(yīng)該有任何不同控硼,有時(shí)你需要打印日期泽论,有時(shí)需要打印 API 的調(diào)用情況,有時(shí)你只希望自己的日志內(nèi)容能突出顯示卡乾,相信我翼悴,你一定需要這個(gè)功能。這也是我們要討論的關(guān)鍵幔妨。

如果在項(xiàng)目中使用了一些第三方庫(kù)鹦赎,就會(huì)注意到它們?cè)诳刂婆_(tái)中增加了大量的無(wú)用垃圾信息,太多垃圾信息了误堡,Wall-E 都郁悶了(譯者注:《機(jī)器人總動(dòng)員》中的機(jī)器人 walle古话,負(fù)責(zé)清理分裝地球上的垃圾廢品)。嗯锁施,我就在說(shuō)你呢陪踩,Urban Airship。(譯者注: Urban Airship 是一個(gè)第三方庫(kù))

emoji 是永遠(yuǎn)都不嫌多

剛才我說(shuō)了 emoji 是一個(gè)非常新穎的功能悉抵,不僅如此肩狂,它還一個(gè)非常實(shí)用的功能。在打印語(yǔ)句中加入 Emojis 極大的改善了調(diào)試過(guò)程基跑,在分析控制臺(tái)的輸出內(nèi)容時(shí)減少相應(yīng)的認(rèn)知負(fù)荷婚温。

溫馨提示:
在 maxOS 系統(tǒng)的任意文本框中按下 Ctrl + Cmd + Space 就會(huì)彈出 emoji .

Strings

let string = "Emojis are life"
print("?? " + string)
// ?? Emojis are life

NSDate

let date = NSDate()
print("?? " + String(date))
// ?? 2016-04-02 00:14:18 +0000

NSURL

let url = NSURL(string: "http://www.andyyhope.com")
print("?? " + String(url))
// ?? http://www.andyyhope.com

NSError

NSError
let userInfo = [NSLocalizedDescriptionKey: "File not found"]
let error = NSError(domain: "Domain", code: 404, userInfo: userInfo)
print(“?? “ + “\(error.code): “ + error.localizedDescription)
// ?? 404: File not found

AnyObject

AnyObject
let anyObject = UIColor.redColor()
print("?? " + String(anyObject))
// ?? UIDeviceRGBColorSpace 1 0 0 1

跟同事開(kāi)個(gè)玩笑

let joke = "What is this... A center for ANTS?!"
print("???? " + joke)
// ???? What is this... A center for ANTS?!

在 iOS 9.1 中已經(jīng)有 184 個(gè) emoji 表情可供使用,emoji 數(shù)量樣子還會(huì)繼續(xù)增加媳否。在眾多的 emoji 中栅螟,總有一款適合你的日志輸出。

實(shí)現(xiàn)它

不要誤會(huì)我篱竭,實(shí)現(xiàn)上面的東西實(shí)在是有點(diǎn)......如果我還繼續(xù)給你說(shuō)這點(diǎn)東西的話力图,估計(jì)我馬上就能收到 Hoover 公司的勒令停止通知函(cease and desist letters)了。
Wrapping anything that isn’t a string inside String parentheses, and also finding the right emoji is an incredible pain and usually impossible if the one you’re looking for isn’t within the “Frequently Used” section.
把一個(gè)不是 string 類型的東西包裹在 String 中掺逼,還要匹配合適的 emoji 吃媒,這幾乎不可能實(shí)現(xiàn),如果你要找的不在"不常用"的部分里。

我感覺(jué)系統(tǒng)貌似能感知你要尋找哪個(gè) emoji 表情赘那,然后把它藏在第五維度的空間里好讓你永遠(yuǎn)找不到刑桑,真讓人抓狂。

似乎便便的 emoji 表情沒(méi)有了募舟?還是它一直就沒(méi)有來(lái)著祠斧? - 你
等等,它在這拱礁!我發(fā)誓我剛才找過(guò)這里白练妗!...什么人生啊這都是呢灶? - 你 (十分鐘之后)

不管怎樣吴超,這篇文章示范了使用 emoji 可以帶來(lái)的效率上的提升,通過(guò)這種方式可以區(qū)分不同類型的信息鸯乃,在閱讀的時(shí)候減少不必要的認(rèn)知負(fù)擔(dān)鲸阻。

如果你愿意繼續(xù)聽(tīng)下去的話,我會(huì)在第二和第三篇文章里討論如何合理的實(shí)現(xiàn)現(xiàn)在說(shuō)的這些東西飒责,同時(shí)我也會(huì)講一些如何讓 emoji 輸出日志更整潔赘娄、有用的小技巧。

本文由 SwiftGG 翻譯組翻譯宏蛉,已經(jīng)獲得作者翻譯授權(quán)遣臼,最新文章請(qǐng)?jiān)L問(wèn) http://swift.gg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拾并,一起剝皮案震驚了整個(gè)濱河市揍堰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗅义,老刑警劉巖屏歹,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異之碗,居然都是意外死亡蝙眶,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門褪那,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)幽纷,“玉大人,你說(shuō)我怎么就攤上這事博敬∮呀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵偏窝,是天一觀的道長(zhǎng)收恢。 經(jīng)常有香客問(wèn)我武学,道長(zhǎng),這世上最難降的妖魔是什么伦意? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任火窒,我火速辦了婚禮,結(jié)果婚禮上驮肉,老公的妹妹穿的比我還像新娘沛鸵。我一直安慰自己,他們只是感情好缆八,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著疾捍,像睡著了一般奈辰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乱豆,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天奖恰,我揣著相機(jī)與錄音,去河邊找鬼宛裕。 笑死瑟啃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揩尸。 我是一名探鬼主播蛹屿,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼岩榆!你這毒婦竟也來(lái)了错负?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勇边,失蹤者是張志新(化名)和其女友劉穎犹撒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體粒褒,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡识颊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奕坟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祥款。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖执赡,靈堂內(nèi)的尸體忽然破棺而出镰踏,到底是詐尸還是另有隱情,我是刑警寧澤沙合,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布奠伪,位于F島的核電站跌帐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绊率。R本人自食惡果不足惜谨敛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滤否。 院中可真熱鬧脸狸,春花似錦、人聲如沸藐俺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)欲芹。三九已至卿啡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菱父,已是汗流浹背颈娜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浙宜,地道東北人官辽。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粟瞬,于是被迫代替她去往敵國(guó)和親同仆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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

  • 嗯哼嗯哼蹦擦擦~~~ 轉(zhuǎn)載自:https://github.com/Tim9Liu9/TimLiu-iOS 目錄 ...
    philiha閱讀 4,910評(píng)論 0 6
  • Hello大家好!我是萌教授. 很開(kāi)心和大家相聚在這樣的時(shí)間和空間里, 今天我想和大家分享一下有關(guān)顏色的問(wèn)題裙品。 當(dāng)...
    時(shí)尚蜜密閱讀 624評(píng)論 0 1
  • 鏡頭下的借女明星們永遠(yuǎn)是光鮮亮麗的清酥,衣著得體扶镀,身材完美,妝容精致焰轻,這樣的她們是無(wú)數(shù)粉絲心中的女神臭觉。然而真實(shí)的貸高清...
    豆腐差館閱讀 823評(píng)論 0 0
  • (六) 我來(lái)自南方的小城。 江南如醉如夢(mèng)的場(chǎng)景辱志, 曾經(jīng)我以為那是最美的城市蝠筑。 能給我深深的依戀。 后來(lái)的后來(lái)揩懒, 我...
    初歸a閱讀 684評(píng)論 0 1