“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥

Posted

技术标签:

【中文标题】“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥【英文标题】:what's the reason for "Current SwiftyJSON (via Swift 3.0.2) cannot be imported with Swift 3.1"“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是什么 【发布时间】:2017-03-29 12:29:01 【问题描述】:

当我今天尝试更新 Xcode8.3 (8E162) 时 - 在更新 carthage 之后 - 发生错误:

当前的 SwiftyJSON(通过 Swift 3.0.2)不能用 Swift 3.1 balabala 导入

我发现 SwiftyJSON 没有在终端中成功结帐。后来无聊了几个小时,才发现解决方法在官方里GitHub repository issue #771: "Current SwiftyJSON (via Swift 3.0) cannot be imported with Swift 3.0.2.".

还有命令

:carthage update --no-use-binaries SwiftyJSON --platform ios

您需要删除并再次添加SwiftyJSON.framwork

虽然这个问题解决了,但是不知道是什么原因,有小伙伴知道是什么原因吗?

【问题讨论】:

我改进了一些主要(代码)格式/拼写/突出显示和语法。 其实我想问的是:出现这个错误的原因是什么 抱歉,我未能充分重新解释您的问题。但是,如果您确实知道得更多——因为您提出了这个问题——为什么不相应地对其进行编辑? 哦不,是我第一次在这个平台上提问,我没有经验如何简明扼要地解释我的问题,非常感谢。 对不起,如果我冒犯了你,但不是只是编辑你的问题以正确的方式(这就是你的方式!),你选择继续贬低我帮助你的努力。 【参考方案1】:

请确保通过在 CLI 中键入“swift --version”来使用 run swift 3.1。如果您仍然看到“Apple Swift 版本 3.0.2”,则意味着您的 Mac 使用 swift 3.0.2 编译器。尝试将 xcode 8.3 替换为 xcode 8.2.1 可能会有所帮助。

【讨论】:

是的,我认为如果我在 Xcode 更新时重新启动我的 Mac,它可能会解决此错误【参考方案2】:

谢谢,你的问题让我花了一整天的时间解决问题 - 我无法弄清楚问题出在哪里。

现在我知道问题出在哪里,原因似乎是 SwiftyJSON 发布了其框架的二进制版本,Carthage 下载并使用了该版本。这些还没有针对 Swift 3.1 进行更新(SwiftyJSON 3.1.4 于 1 月 10 日发布),并且没有 --no-use-binaries 开关,Carthage 会很乐意使用它,即使它是无效的。

【讨论】:

啊哈,听起来很有道理,或许我需要了解一下carthage的底层原理,才能真正避免以后出现此类问题

以上是关于“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥的主要内容,如果未能解决你的问题,请参考以下文章