我试图创建一个可以在我的应用中使用的全局变量。我发现我可以把东西放在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
}
}
}
那也不起作用。
答案 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。