在我的Objective-C项目中,我经常使用一个全局常量文件来存储像通知名称和NSUserDefaults键这样的东西。它看起来是这样的:
@interface GlobalConstants : NSObject
extern NSString *someNotification;
@end
@implementation GlobalConstants
NSString *someNotification = @"aaaaNotification";
@end
我如何在Swift中做完全相同的事情?
根据swift docs,全局变量是在文件作用域中声明的。
全局变量是定义在任何函数、方法、闭包或类型上下文之外的变量
只需创建一个swift文件(例如:constats .swift)并在那里声明你的常量:
// Constants.swift
let SOME_NOTIF = "aaaaNotification"
从项目中的任何地方调用它,而不需要提及struct,enum或类名。
// MyViewController.swift
NotificationCenter.default.post(name: SOME_NOTIF, object: nil)
我认为这对于代码可读性来说更好。
Swift 4版本
如果您想为NotificationCenter创建一个名称:
extension Notification.Name {
static let updateDataList1 = Notification.Name("updateDataList1")
}
订阅通知:
NotificationCenter.default.addObserver(self, selector: #selector(youFunction), name: .updateDataList1, object: nil)
发送通知:
NotificationCenter.default.post(name: .updateDataList1, object: nil)
如果你只是想要一个有变量的类:
class Keys {
static let key1 = "YOU_KEY"
static let key2 = "YOU_KEY"
}
Or:
struct Keys {
static let key1 = "YOU_KEY"
static let key2 = "YOU_KEY"
}