【发布时间】:2016-10-09 19:07:19
【问题描述】:
我最近沉迷于Extensions。我发现是一个巨大的 PITA 的一件事是弄清楚我在哪里存放了一个有用的方法,例如 Array、NSManagedObject 等。
我所做的是将我的扩展名放在一个名为 CustomExtensions 的 NSObject 类文件中,并按字母顺序列出类扩展名。
它有效,但我想看看它是否符合最佳实践。如果没有,跟踪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
【问题讨论】:
-
你把你的扩展放入
NSObject是什么意思?Array扩展名不应在任何其他类中,例如... -
@DanielT。谢谢阅读。我更新了我的答案,这样你就可以看到我做了什么。
-
根据您的示例,我仍然不明白这个
CustomExtensions类应该用于什么。你肯定不会从它中分出子类,是吗? -
我刚刚创建了一个空白的
NSObject类并将扩展名放在它的底部,这样它们就都在一个地方,而不是分散在一堆不同的文件中。这种方法对我有用,但我想看看它是否符合最佳做法。 -
如果
CustomExtensions类为空,则将其删除。这是完全没有必要的。我现在正在为您的问题撰写答案...