Swift AppDelegate Struct用法

时间:2017-02-16 18:17:12

标签: swift

我试图创建一个可以在我的应用中使用的全局变量。我发现我可以把东西放在AppDelegate类中,它随处可见,如果你知道更好的方法请告诉我。

当我尝试制作一个结构时,我遇到了问题。我的代码:

struct category {
    let one: UInt32 = 0x1 << 1
    let two: UInt32 = 0x1 << 2
    let three: UInt32 = 0x1 << 3
    let four: UInt32 = 0x1 << 4
}

当我尝试在任何类中访问它时,我收到错误

Instance member 'one' cannot be used on type 'category'

我也尝试过使用:

struct category {
    let one: UInt32 {
        get {
           return 0x1 << 1
        } 
    }
}

那也不起作用。

1 个答案:

答案 0 :(得分:2)

首先,App Delegate并没有什么特别之处。您可以在任何地方创建一个全局变量,只要它在自己的范围内(不包含在任何内容中)。

其次,您获得的错误是因为您创建的let是实例变量,这意味着您需要一个类别实例。所以你可以说

let myCategory = category()
let one = myCategory.one

但如果你想要一个全局常数,这可能不是你想要的。如果您不想创建对象的实例,请创建let s static

struct category {
    static let one: UInt32 = 0x1 << 1
    static let two: UInt32 = 0x1 << 2
    static let three: UInt32 = 0x1 << 3
    static let four: UInt32 = 0x1 << 4
}

let one = category.one

第三,你应该对结构名称(Category)进行大写,然后阅读所有这些内容的Swift language guide