Swift 2.3 中没有这样的模块“UserNotifications”

Posted

技术标签:

【中文标题】Swift 2.3 中没有这样的模块“UserNotifications”【英文标题】:No such module "UserNotifications" in Swift 2.3 【发布时间】:2016-11-28 13:07:31 【问题描述】:

我在 Xcode 7.3.1 上使用 Swift 2.3,在 AppDelegate 中我尝试导入

import UserNotifications

它给了我“没有这样的模块UserNotifications”的错误。有什么问题,我该如何解决?

我尝试在定义了SWIFT_VERSION = 2.3 的 Xcode 8 上运行它,但我在 Alamofire 框架中遇到了很多错误,但我也在 Alamofire swift 版本中进行了设置。所以我决定继续开发 Xcode 7。

那么,是因为 Xcode 版本还是我也可以在 Xcode 7 上修复它?我的目标 ios 是 10。我在受支持的平台 10.2 文件夹中复制,所以我可以从 Xcode 7 在 iOS 10 设备上运行

【问题讨论】:

您是否在Linked Framework and Libraries 中添加了UserNotifications.framework 要使用 Xcode 8,只需打开您的项目,找到构建设置并将 Use_Legacy_Swift_Version 设置为 true。对您已安装的任何库执行此操作。您可能还需要对库进行代码设计。 @Poles 我在列表中找不到它 @JacobKing 我已经这样做了。但是 Alamofire 仍然给我语法错误 =/ 【参考方案1】:

您不能简单地将swift2.3swift3 混合在单个目标中的单个项目中,这也不是推荐的方法。

你得到的错误是由于UserNotifications 框架。 xcode8中已经添加了这个框架,所以你不能在xcode7.3.1中使用这个框架。

另外,如果您打算在 Xcode 8 中使用 swift2.3,那么您必须使用 Legacy Swift Version,如果您选择了是,那么您将能够运行 swift2.3 中的项目,但您不会能够使用swift3的语法。

【讨论】:

但是如果我已经设置了旧版本和 swift 版本,为什么 Alamofire 会给我语法错误? =/ alamofire 是什么版本,你的Xcode 是什么版本? 在你的 pod 中将 Legacy Swift Version 设置为是 alamofire。【参考方案2】:

要在 xcode 8 中打开 swift 2.3 项目,您必须为 target 和 alamofire 设置旧版表单构建设置。

【讨论】:

以上是关于Swift 2.3 中没有这样的模块“UserNotifications”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 2.3 和 3.0 编译模块?

Xcode 8 和 Swift 3 中没有这样的模块 Alamofire

没有这样的模块错误“NotificationCenter”WatchOS,Swift

AppDelegate.swift 中没有这样的模块“电容器”

XCode 9 Swift 4 中没有这样的模块“FBAudienceNetwork”

CocoaPods 在 Xcode 7 Swift 2.2 中没有这样的模块