在我的Objective-C项目中,我经常使用全局常量文件来存储 NSUserDefaults
的通知名称和键等内容 . 它看起来像这样:
@interface GlobalConstants : NSObject
extern NSString *someNotification;
@end
@implementation GlobalConstants
NSString *someNotification = @"aaaaNotification";
@end
我如何在Swift中做同样的事情?
12 回答
IMO处理这种常量的最好方法是创建一个Struct .
然后,例如,在您的代码中将其称为:
编辑:如果你想要一个更好的组织,我建议你使用分段子结构
然后你可以使用例如
K.Path.Tmp
Swift 4 Version
如果要为NotificationCenter创建名称:
订阅通知:
发送通知:
如果您只想要一个包含变量的类:
要么:
I am abit late to the party.
无论在这里我是如何管理常量文件的,这样在使用swift编写代码时对开发人员更有意义 .
FOR URL:
For CUSTOMFONTS:
FOR ALL THE KEYS USED IN APP
FOR COLOR CONSTANTS:
您可以将这些所有文件包装在Xcode项目中名为 Constants 的公共组中 .
而且更多观看这个video
虽然我更喜欢@Francescu的方式(使用带静态属性的结构),但您也可以定义全局常量和变量:
但请注意,与局部变量/常量和类/结构属性不同,全局变量是隐式延迟的,这意味着它们在第一次访问时会被初始化 .
建议阅读:Global and Local Variables,以及Global variables in Swift are not variables
Constant.swift
ViewController.swift
考虑枚举 . 这些可以在逻辑上分解为单独的用例 .
当您处于互斥选项的情况时,会发生一个独特的好处,例如:
在此示例中,您将收到编译错误,因为您尚未处理
PhotoMetaKeys.DateTaken
的情况 .或者只是在GlobalConstants.swift中:
像其他人一样提到在课堂外宣布的任何事情都是全球性
你也可以创建单身人士:
任何时候你想要使用这个类的东西,例如写:
如果您现在从项目的任何位置编写
println(TestClass.sharedInstance.number)
,则会将1
打印到日志中 . 这适用于各种对象 .tl;dr: 任何时候想要在类中创建全局内容,将
static let sharedInstance = YourClassName()
添加到类中,并使用前缀YourClassName.sharedInstance
寻址该类的所有值我在Swift项目中做了什么
1:创建新的Swift文件
2:在其中创建结构和静态常量 .
3:For Using只使用YourStructName.baseURL
注意:创建初始化后需要很少的时间,因此它会在2-5秒后显示在其他视图控制器中 .
对于通知,您可以使用扩展名,如下所示:
并像
NotificationCenter.default.post(name: .testNotification, object: nil)
一样使用它Colors
Fonts
对于其他 - 一切都与接受的答案相同 .
根据swift docs全局变量在文件范围内声明 .
只需创建一个swift文件(例如:Constnats.swift)并在那里声明你的常量:
并从项目的任何地方调用它,而无需提及struct,enum或class name .
我认为这对于代码可读性来说要好得多 .