【问题标题】:Swift map function variability [duplicate]Swift映射函数可变性[重复]
【发布时间】:2018-10-24 05:29:04
【问题描述】:

我有这个正常工作的地图功能:

let movingImages = (1...71).map { UIImage(named: "Animation.\($0)")! }

除了没有 Animation.1 文件 - 它是 Animation.01

除了重命名文件之外,我如何编写代码以将 0 添加到 10 之前的数字?

编辑:这个问题与其他问题不同,因为在其他地方提供的关于在 Swift 中将 0 添加到单个数字的答案需要额外的上下文才能在需要返回值的映射中使用

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您可以为此使用String(format: ...)%02d

    let movingImages = (1...71).map {  index -> UIImage? in
         let imageNumber = String(format: "%02d", index) 
         return UIImage(named: "Animation.\(imageNumber)")!
    }
    

    另外,请注意,避免使用强制展开 (!)。

    更安全的方式:

    斯威夫特 4:

    let movingImages = (1...71).flatMap { index -> UIImage? in
         let imageNumber = String(format: "%02d", index) 
         return UIImage(named: "Animation.\(imageNumber)")
    }
    

    Swift 4.1:

    let movingImages = (1...71).compactMap { index -> UIImage? in
         let imageNumber = String(format: "%02d", index) 
         return UIImage(named: "Animation.\(imageNumber)")
    }
    

    【讨论】:

    • 这里实际上需要强制解包图像,因为它会导致崩溃,让开发人员在开发的早期就知道缺少图像文件。使用flatMap/compactMap 将隐藏一个或多个图像可能丢失的事实。
    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 2018-03-27
    • 2011-08-04
    • 2020-09-18
    相关资源
    最近更新 更多