在我的Objective-C项目中,我经常使用一个全局常量文件来存储像通知名称和NSUserDefaults键这样的东西。它看起来是这样的:

@interface GlobalConstants : NSObject

extern NSString *someNotification;

@end

@implementation GlobalConstants

NSString *someNotification = @"aaaaNotification";

@end

我如何在Swift中做完全相同的事情?


当前回答

虽然我更喜欢@Francescu的方式(使用带有静态属性的结构体),但你也可以定义全局常量和变量:

let someNotification = "TEST"

但是请注意,与局部变量/常量和类/结构属性不同,全局变量是隐式惰性的,这意味着它们在第一次访问时被初始化。

建议阅读:全局变量和局部变量,以及Swift中的全局变量都不是变量

其他回答

虽然我更喜欢@Francescu的方式(使用带有静态属性的结构体),但你也可以定义全局常量和变量:

let someNotification = "TEST"

但是请注意,与局部变量/常量和类/结构属性不同,全局变量是隐式惰性的,这意味着它们在第一次访问时被初始化。

建议阅读:全局变量和局部变量,以及Swift中的全局变量都不是变量

或者只在GlobalConstants.swift中:

import Foundation

let someNotification = "aaaaNotification"

对于通知,你可以使用扩展,像这样:

extension Notification.Name {
    static let testNotification = "kTestNotification"
}

然后像NotificationCenter.default.post那样使用它(名称:.testNotification,对象:nil)

我在Swift项目中所做的 1:新建Swift File 2:创建一个结构和静态常量。 3:对于使用只使用YourStructName.baseURL

注意:在创建初始化后,初始化需要很少的时间,所以它将在2-5秒后显示在其他视图控制器中。

import Foundation

    struct YourStructName {
    static let MerchantID = "XXX"
    static let MerchantUsername = "XXXXX"
    static let ImageBaseURL = "XXXXXXX"
    static let baseURL = "XXXXXXX"
    }

颜色

extension UIColor {
    static var greenLaPalma: UIColor {
        return UIColor(red:0.28, green:0.56, blue:0.22, alpha:1.00)
    }
}

字体

enum CustomFontType: String {
    case avenirNextRegular = "AvenirNext-Regular",
    avenirDemiBold = "AvenirNext-DemiBold"
}

extension UIFont {
    static func getFont(with type: CustomFontType, size: CGFloat) -> UIFont {
        let font = UIFont(name: type.rawValue, size: size)!

        return font
    }
}

对于其他-一切都与接受的答案相同。