This question already has answers here:
swift, write code for ios 7 and 8

(5个答案)


6年前关闭。




我正在使用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];

但很快application对象没有名为registerForRemoteNotificationTypes的方法

有任何想法吗?请帮忙。

最佳答案

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中修复。

关于ios - dyld:找不到符号:尝试在iOS7上运行时,_OBJC_CLASS _ $ _ UIUserNotificationSettings,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25461654/

10-14 03:16