Swift開發(fā)小技巧系列 - 格式化輸出

原文鏈接

正文

在實(shí)際項(xiàng)目中,你可能會遇到一些場景需要使用格式化輸出的。比如,在一個倒計時的UI界面,需要顯示還剩多少分鐘和多少秒(3:09),要求秒始終顯示兩位。

版本一:

let minutes: Int = 5
let seconds: Int = 9

let secondsStr = String(format: "%02ld", seconds)
let result = "\(minutes):\(secondsStr)" // "5:09"

這個需求實(shí)現(xiàn)起來很簡單,我們使用String的格式化的初始化方法就可以了。這里要注意格式化標(biāo)識符要使用%ld,不能使用%d,否則在64位的機(jī)器上有可能會出現(xiàn)跟你期待不一樣的結(jié)果。

版本二:

extension Int {
    public func format(_ f: String) -> String {
        return String(format: "%\(f)ld", self)
    }
}
let minutes: Int = 5
let seconds: Int = 9

let secondsStr = seconds.format("02")
let result = "\(minutes):\(secondsStr)"

這個版本我做了一些優(yōu)化,因?yàn)楦袷交址看螌懫饋碛悬c(diǎn)麻煩,很容易忘記。為了我為Int寫了一個擴(kuò)展。這樣以后使用起來就方便了。

同樣的我們也可以為Double寫類似的擴(kuò)展來實(shí)現(xiàn)取小數(shù)點(diǎn)后幾位的功能。

extension Double {
    public func format(_ f: String) -> String {
        return String(format: "%\(f)f", self)
    }
}
let pi: Double = 3.14159265
let str = pi.format(".2") // "3.14"

總結(jié)

  • 這個小功能實(shí)現(xiàn)起來很簡單,但是我們開發(fā)可能經(jīng)常忘記,寫起來也很麻煩。通過給需要實(shí)現(xiàn)格式化輸出的類型寫一個Extension來優(yōu)化書寫和記憶,從而節(jié)省開發(fā)時間。
  • 為了完整性,我們應(yīng)該給所有的整形(Int8,UInt8,Int16...)都加上這個擴(kuò)展。我已經(jīng)這么做了,請查考SwiftDevHints。你可以直接在你的項(xiàng)目中使用它。

參考

聯(lián)系方式

備注

我們在軟件開發(fā)的過程中,為了提高效率,其中很重要的一環(huán)就是把反復(fù)使用到的功能或模塊封裝起來。因此我在GitHub上開源了一個小工具集 - SwiftDevHints,來總結(jié)自己在實(shí)際項(xiàng)目開發(fā)過程中封裝的一些小功能。

剛剛介紹的只是其中一個小功能,想看看其它更多功能,請直接點(diǎn)擊SwiftDevHints。如果您覺得對您有所幫助,請給一個star吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,172評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,641評論 19 139
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,424評論 4 61
  • 我想到一個點(diǎn)子。靈感來源于高中時候偶然看到由達(dá)米安·斯茲弗隆執(zhí)導(dǎo)的《荒蠻故事》。 每個人的設(shè)定都是性格迥異,經(jīng)歷不...
    陀思妥耶夫絲姬閱讀 341評論 0 0
  • 正午陽光,真的很燦爛。 關(guān)上窗戶,隔絕了偷跑進(jìn)來的冷氣,這幾平方的空間,任由自己用合適的方式打開休息的模式;無疑,...
    木徒閱讀 384評論 0 0

友情鏈接更多精彩內(nèi)容