Enums 如何使用苹果&x27;保持干燥时,开关中的SDK常数是多少?
在苹果的Enums 如何使用苹果&x27;保持干燥时,开关中的SDK常数是多少?,enums,swift,Enums,Swift,在苹果的NSUbiquitousKeyValueStore类中,有一个NSUbiquitousKeyValueStoreChangeReasonKey是userInfo通知的字符串查找键。其可能值为 var NSUbiquitousKeyValueStoreServerChange: Int { get } var NSUbiquitousKeyValueStoreInitialSyncChange: Int { get } var NSUbiquitousKeyValueStoreQuotaV
NSUbiquitousKeyValueStore
类中,有一个NSUbiquitousKeyValueStoreChangeReasonKey
是userInfo通知的字符串查找键。其可能值为
var NSUbiquitousKeyValueStoreServerChange: Int { get }
var NSUbiquitousKeyValueStoreInitialSyncChange: Int { get }
var NSUbiquitousKeyValueStoreQuotaViolationChange: Int { get }
var NSUbiquitousKeyValueStoreAccountChange: Int { get }
我更希望有一个enum可以从Swift彻底的开关检查中获益,并且只是一般的样式一致性。为什么将这些常量放在Enum
中是一个坏主意或不可能,必须有一个非常明显的原因或设计范例
可能是因为这些值在
NSDictionary
中使用,并且使用常量会强制用户从NSDictionary
中向下转换NSObjects,通常使用类型化结构/原语/枚举在这种情况下会产生误导 它很可能是从Obj-C自动转换而来的,很少或根本没有人工审查。这就是我想知道的,我开始认为编写这个类的人一定知道一些我不知道的东西,并以这种方式做出了明确的设计选择。或者它只是一个遗产的产物?也许关于NSDictionary
的值的某些内容只能采用NSObject
s?有根据的猜测:在Obj-C中,它是一个匿名枚举,因此无法从字符串表示中自动删除枚举名称前缀。