Swift中全局常量的书写(Struct)

4,498 阅读1分钟

Objective-C

在OC中经常会用到一些静态常量。 比如

static NSString *const tableviewCellIdentifer = @"tableviewCellIdentifer";

使用的时候

extern NSString *tableviewCellIdentifer;

Swift

在Swift中,我们可以利用Struct来实现全局常量。 如

struct Constants {
    static let someNotification = "TEST"
}

在使用的时候就可以直接点出来。

print(Constants.someNotification)

在具体使用中Struct 也可以这样:

struct Key {
    struct NotificationKey {
        static let Welcome = "kWelcomeNotif"
    }

    struct Path {
        static let Documents = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
        static let Tmp = NSTemporaryDirectory()
    }
}

例如AppColor类中,将一些基本设置写好,在使用的时候可以直接调用

struct AppColor {

    private struct Alphas {
        static let Opaque = CGFloat(1)
        static let SemiOpaque = CGFloat(0.8)
        static let SemiTransparent = CGFloat(0.5)
        static let Transparent = CGFloat(0.3)
    }

    static let appPrimaryColor =  UIColor.white.withAlphaComponent(Alphas.SemiOpaque)
    static let appSecondaryColor =  UIColor.blue.withAlphaComponent(Alphas.Opaque)

    struct TextColors {
        static let Error = AppColor.appSecondaryColor
        static let Success = UIColor(red: 0.1303, green: 0.9915, blue: 0.0233, alpha: Alphas.Opaque) 
    }

    struct TabBarColors{
        static let Selected = UIColor.white
        static let NotSelected = UIColor.black
    }

    struct OverlayColor {
        static let SemiTransparentBlack = UIColor.black.withAlphaComponent(Alphas.Transparent)
        static let SemiOpaque = UIColor.black.withAlphaComponent(Alphas.SemiOpaque)
        static let demoOverlay = UIColor.black.withAlphaComponent(0.6)
    }
}

Swift提供的Struct 的用法与通过点语法访问属性用法一致,方便的是不需要再去声明创建一个类,并且可以将 Struct 分类归类的写在一个地方。这无疑要比OC中大段大段的Prifix文件要优雅的多。