这似乎是一个非常简单的问题,但我找不到明确的答案。同样,它也不是专门针对swift或iO的,但是我是编程的新手,而swift是我唯一了解的语言,所以我不知道如何在更笼统的上下文中使用它。
我试图编写一个iOs应用程序,但发现自己在代码中多次定义了相同的常量。
例如,我必须写过这行大约一百次:
let calendar = NSCalendar.currentCalendar()
另一个示例是从其持久性存储中获取我唯一的User对象:
let realm = try! Realm()
let user = realm.objects(User).first!
我在类,子类,扩展和计算属性的整个代码中一遍又一遍地定义那些calendar
和user
常量。
不过,这似乎有点愚蠢。我认为我应该能够calendar
一劳永逸地进行定义,并在需要时使用它。因此,我的第一个想法是声明一个全局常量,但显然每个人都认为应不惜一切代价避免使用带有“全局”一词的任何东西。
所以我该怎么做?还有其他解决方案吗?我是否应该一遍又一遍地写同样的东西?
提前致谢,
丹尼尔
在许多不同的情况下,最好使用不同的方法。
例如,在您的情况下:
let calendar = NSCalendar.currentCalendar()
currentCalendar
是一个静态方法,已经返回了将要使用的对象的指针。而且,您无需将其设置为某个常量即可用于简单的情况:
print(NSCalendar.currentCalendar().calendarIdentifier)
另一件事通常是最好在需要经常引用对象的名称时使用较短的名称,并且此代码看起来更具可读性:
print(calendar.calendarIdentifier)
如果您具有经常在不同地方的应用程序中使用的功能,则可以将其设置为静态方法,而不必在每次调用它时都创建此类的对象:
class NetworkConnection {
class func getDataFromServet(completion block: (data: SomeType) -> Void) {
...
}
}
并使用它而无需创建对象,例如:
NetworkConnection.getDataFromServer(completion: {(data: SomeType) -> Void in
...
})
如果需要在许多地方使用创建的对象,最好的解决方案不是使它成为全局实例或单例实例,而是将指向它的指针传递到需要使用它的对象。这使代码更具可读性,例如通过查看init
方法的输入参数,任何人都可以立即了解哪些对象将此类用于其工作。此类更容易从项目的单独模块中获取并连接到另一个项目。那时,如果您使用单例实例,则该类的接口尚不清楚它可以使用什么,这会导致代码混淆。这适用于全局对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句