我正在尝试按照版本为设备创建变量,但我的控件总是转到else部分。我的iOS是9.3
#if os(iOS) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
var addressBookRef : CNContactStore? = nil
#else
var addressBookRef : ABAddressBook? = nil
#endif
我也按建议here尝试了此操作,但defined
没有接受Swift2.x
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000
var addressBookRef : CNContactStore? = nil
#else
var addressBookRef : ABAddressBook? = nil
#endif
当我在运行时检查并使用断点时,我可以看到我的控件总是转到其他部分而变量addressBookRef
的类型为ABAddressBook
。
建议我做错了什么
答案 0 :(得分:3)
您无法使用指令检查iOS的版本,您需要在运行时检查它。
如果您使用的是iOS 8.0或更高版本,则可以使用:
let os = NSProcessInfo().operatingSystemVersion
switch (os.majorVersion, os.minorVersion, os.patchVersion) {
case (8, 0, _):
// 8.0.0 and < 8.1.0
case (8, _, _):
// 8.1.0 and < 9.0
case (9, _, _):
// 9.0.0
default:
//
}
您还可以使用UIDevice.currentDevice().systemVersion
,它也适用于iOS 7:
switch UIDevice.currentDevice().systemVersion.compare("8.0.0", options: NSStringCompareOptions.NumericSearch) {
case .OrderedSame, .OrderedDescending:
// >= 8.0
case .OrderedAscending:
// < 8.0
}