ios - Swift 扩展最佳实践

标签 ios swift swift3

我最近对Extensions 上瘾了。我发现一个巨大的 PITA 的一件事是计算我在哪里隐藏了一个有用的方法,比如 ArrayNSManagedObject 等。

我所做的是将我的扩展放在一个名为 CustomExtensionsNSObject 类文件中,然后我按字母顺序在其中列出类扩展。

它有效,但我想看看它是否符合最佳实践。如果没有,跟踪Extensions 的最佳方法是什么?

这是我所做的:

class CustomExtensions: NSObject {
    /*
     Useful extensions, nothing else here
     */
}
// Example extension    
extension Int {
    func formatAsTimeString() -> String {
        let seconds = self % 60
        let minutes = (self / 60) % 60
        let hours = self / 3600
        let stringHours = hours > 9 ? String(hours) : "0" + String(hours)
        let stringMinutes = minutes > 9 ? String(minutes) : "0" + String(minutes)
        let stringSeconds = seconds > 9 ? String(seconds) : "0" + String(seconds)

        if hours > 0 {
            return "\(stringHours):\(stringMinutes):\(stringSeconds)"
        }
        else {
            return "\(stringMinutes):\(stringSeconds)"
        }
    }
}
// More extensions below

最佳答案

我认为围绕这​​个问题的“最佳实践”还没有找到。也就是说,这是 MHO:

最终,我对待这些扩展的方式与我在 C 中处理全局函数的方式相同。毕竟,它们基本上就是这样。具有特殊语法的全局函数...

如果扩展只在一个文件中使用,那么我会把扩展放在同一个文件中。当我完成时,我最终得到了其中的一些。例如,您的 formatAsTimeString 是一种 View 模型。如果它由单个 View Controller 使用,我会把它留在 View Controller 的文件中。

如果扩展被多个类使用,那么我会把它分解成一个单独的文件。我将以扩展名命名该文件。因此,例如,如果 formatAsTimeString 在多个文件中使用,那么我将有一个名为“Int+formatAsTimeString.swift”的文件,扩展可以在其中存在。

如果有很多相关的函数,那么我会把它们放在同一个文件中,并根据函数的抽象思想来命名文件。我通过想象如果我选择在不同的程序中使用它们是否必须将它们一起移动,我决定这些函数是相关的......例如,也许我有其他时间字符串相关的函数......

关于ios - Swift 扩展最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947442/

相关文章:

ios - 在 IOS 中,选定的 UITableViewCell 的灰色背景颜色来自哪里?

ios - 如何展开和折叠 UILabel?

ios - 以编程方式加载另一个 View 需要时间

swift - 未捕获的 Kotlin 异常 : kotlin. native.IncorrectDereferenceException:非法尝试访问非共享

swift3 - 在 PromiseKit 6 中正确链接多个 Promise

ios - 是什么让用户可以被 CKDiscoverAllUserIdentitiesOperation 发现?

ios - NSMutableArray 的索引不是以 0 开头

ios - (Swift) 应用内购买 Wi-Fi 错误

ios - 比较数组和 Realm 数据库中的字符串数据?

ios - UIImageView可以制作这样的可拉伸(stretch)区域吗?