首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速,为ios 7和8编写代码

快速,为ios 7和8编写代码
EN

Stack Overflow用户
提问于 2014-06-17 05:51:08
回答 5查看 4.4K关注 0票数 17

我用Swift编写了一个测试应用程序,我想以iOS 7为目标。

代码语言:javascript
复制
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound 
    | UIUserNotificationType.Alert 
    | UIUserNotificationType.Badge, 
    categories: nil))

但是这个调用在iOS 7中是不可用的,所以我添加了

代码语言:javascript
复制
var version:NSString = UIDevice.currentDevice().systemVersion as NSString;
if  version.doubleValue >= 8 {
    // ios 8 code
}

ios 8代码块仅在iOS 8下运行(经过测试),但在运行iOS 7中的应用程序时,我仍然得到

dyld:符号未找到:从: /var/mobile/Applications/AC73969D-1A4C-45AC-99CA-0B3982C1EE36/Timely.app/Timely引用的_OBJC_CLASS_$_UIUserNotificationSettings在/var/mobile/Applications/AC73969D-1A4C-45AC-99CA-0B3982C1EE36/Timely.app/Timely中预期为: /System/Library/Frameworks/UIKit.framework/UIKit

我认为这是因为二进制文件包含iOS 7中不存在的符号to api,但是如何解决这个问题呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-06-17 15:25:11

不幸的是,我认为您遇到了当前的限制,请参见

What is the Swift preprocessor equivalent to iOS version check comparison?

解决这个问题的唯一方法是添加一个Objective文件,然后使用#if宏并创建您从Swift调用的两个助手函数(一个用于iOS8,另一个用于iOS7)。我希望这个问题会在某一时刻得到解决。

票数 2
EN

Stack Overflow用户

发布于 2014-08-20 02:50:39

在Beta6中,似乎有些(全部?)连接问题已经解决了。与UIAlertAction和UIAlertController相关的应用程序过去未能在7.1上发布,但现在将推出。您仍然不能在7.1中使用它们,但是您可以测试iOS版本并使用旧的对象。

票数 1
EN

Stack Overflow用户

发布于 2014-11-03 21:55:29

我遇到了一个类似的问题,因此对于任何有此问题的人,这里有另一个可能的解决方案:

如果您转到目标>通用>链接框架和库,您应该会看到UIKit (如果不是,添加它)。确保它旁边写着“可选”而不是“必需”.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24256583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档