Swift开发小技巧系列 - 格式化输出

原文链接

正文

在实际项目中,你可能会遇到一些场景需要使用格式化输出的。比如,在一个倒计时的UI界面,需要显示还剩多少分钟和多少秒(3:09),要求秒始终显示两位。

版本一:

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

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

这个需求实现起来很简单,我们使用String的格式化的初始化方法就可以了。这里要注意格式化标识符要使用%ld,不能使用%d,否则在64位的机器上有可能会出现跟你期待不一样的结果。

版本二:

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)"

这个版本我做了一些优化,因为格式化字符串每次写起来有点麻烦,很容易忘记。为了我为Int写了一个扩展。这样以后使用起来就方便了。

同样的我们也可以为Double写类似的扩展来实现取小数点后几位的功能。

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"

总结

  • 这个小功能实现起来很简单,但是我们开发可能经常忘记,写起来也很麻烦。通过给需要实现格式化输出的类型写一个Extension来优化书写和记忆,从而节省开发时间。
  • 为了完整性,我们应该给所有的整形(Int8,UInt8,Int16...)都加上这个扩展。我已经这么做了,请查考SwiftDevHints。你可以直接在你的项目中使用它。

参考

联系方式

备注

我们在软件开发的过程中,为了提高效率,其中很重要的一环就是把反复使用到的功能或模块封装起来。因此我在GitHub上开源了一个小工具集 - SwiftDevHints,来总结自己在实际项目开发过程中封装的一些小功能。

刚刚介绍的只是其中一个小功能,想看看其它更多功能,请直接点击SwiftDevHints。如果您觉得对您有所帮助,请给一个star吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,469评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,408评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,207评论 4 61
  • 我想到一个点子。灵感来源于高中时候偶然看到由达米安·斯兹弗隆执导的《荒蛮故事》。 每个人的设定都是性格迥异,经历不...
    陀思妥耶夫丝姬阅读 2,144评论 0 0
  • 正午阳光,真的很灿烂。 关上窗户,隔绝了偷跑进来的冷气,这几平方的空间,任由自己用合适的方式打开休息的模式;无疑,...
    木徒阅读 2,642评论 0 0