我有一个测试应用程序我正在用Swift编写,我想要针对iOS 7.但是启用我需要添加的本地通知
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound
| UIUserNotificationType.Alert
| UIUserNotificationType.Badge,
categories: nil))
Run Code Online (Sandbox Code Playgroud)
但是这个调用在iOS 7中不可用,所以我补充道
var version:NSString = UIDevice.currentDevice().systemVersion as NSString;
if version.doubleValue >= 8 {
// ios 8 code
}
Run Code Online (Sandbox Code Playgroud)
ios 8代码块仅在iOS 8(经测试)下运行,但在iOS 7中运行应用程序时我仍然可以使用
dyld:未找到符号:_OBJC_CLASS _ $ _ UIUserNotificationSettings引自:/var/mobile/Applications/AC73969D-1A4C-45AC-99CA-0B3982C1EE36/Timely.app/Timely期望:/System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/AC73969D-1A4C-45AC-99CA-0B3982C1EE36/Timely.app/Timely
我认为这是因为二进制文件包含iOS 7中不存在的api符号,但我该如何解决这个问题呢?
不幸的是,我认为您遇到了当前的限制,请参阅此
相当于 iOS 版本检查比较的 Swift 预处理器是什么?
解决这个问题的唯一方法是添加一个 Objective-C 文件,然后使用#if宏并创建两个从 Swift 调用的辅助函数(一个用于 iOS8,一个用于 iOS7)。我预计这个问题会在某个时候得到解决。
| 归档时间: |
|
| 查看次数: |
4331 次 |
| 最近记录: |