dyld:未找到符号:_OBJC_CLASS _ $ _ UIUserNotificationSettings尝试在iOS7上运行时

时间:2014-08-23 11:53:16

标签: ios ios7 swift

我正在使用Swift。我正在尝试询问用户的权限。

我使用此代码询问用户权限:

application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))

此代码在iOS8模拟器上运行良好

但是当我尝试使用iOS7在iPad 2上构建和运行我的应用程序时,我的应用程序正在崩溃并显示消息

  

dyld:未找到符号:_OBJC_CLASS _ $ _ UIUserNotificationSettings     参考自:/var/mobile/Applications/07D5D4BE-E6A3-43EE-ABEB-E9A1E4658F75/MyFirstApp.app/MyFirstApp预期在:/System/Library/Frameworks/UIKit.framework/UIKit    在/var/mobile/Applications/07D5D4BE-E6A3-43EE-ABEB-E9A1E4658F75/MyFirstApp.app/MyFirstApp   (lldb)

要在Obj-C中询问用户权限,我们使用

[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];

但在swift中,application对象没有名为registerForRemoteNotificationTypes

的方法

有什么想法吗?请帮忙。

1 个答案:

答案 0 :(得分:3)

UIUserNotificationSettings仅适用于iOS 8。所以你必须做这样的事情:

if NSClassFromString("UIUserNotificationSettings") != nil {
    // Do the things in iOS 8 way.
} else {
    // Do the things in iOS 7 way.
}

以上代码曾经在iOS 7上崩溃,但他的问题应该在Beta6中修复。