对于使用Swift的目标,需要正确配置“使用Legacy Swift语言版本”(SWIFT_VERSION)

时间:2017-12-18 00:07:46

标签: ios swift xcode

我在我继承的应用中收到此错误。

我不确定在不破坏应用程序的情况下应该做些什么。我被告知应用程序开发的版本是Swift 3.0。我也得到"Click update to change your target's build settings to use the latest Swift syntax"

我目前正在使用Xcode 8.2.1,项目格式与Xcode 3.2兼容。

根据我所看到的,我的理解是,使用Swift 3.0版,我不应该设置它吗?将此设置为阻止代码编译的任何内容吗?

我对Swift和Xcode的不同做了很多工作,而且我在找到一个很好的解释方面遇到了一些麻烦。

这是一张图片:

Unsupported

3 个答案:

答案 0 :(得分:0)

如果你使用pod。在podfile中添加以下代码。再次安装pod,希望它能运行。

import cv2
cap = cv2.VideoCapture(videopath)
cap.set(cv2.CV_CAP_PROP_POS_FRAMES, frame_number-1)
res, frame = cap.read()

答案 1 :(得分:0)

(事先注意:您可能必须在每个目标中将旧版swift版本设置为true,包括每个广告

如果我是你,我会尝试使用 Xcode 8.1 并将使用旧版swift版设置为 true 。如果没有帮助,请尝试使用最新版本,如果这不起作用,那么项目中可能存在非常旧的swift 2 pod或代码。

我们在Xcode 8中遇到过这个问题。我们的项目是用swift 2编写的,而Xcode 8.1是支持它的最新版本。

Xcode 9支持swift 3.2,实际上是快速的3 ,但只是为了使swift 4更容易翻译。

如果一切都失败了,请尝试使用xCode的代码转换器功能。它已成功将我们的代码库从swift 3.0转换为swift 4.0。

注意: 检查每个pod及其github页面以查找哪个pod太旧,如果它是打折的库,则可能必须替换它。

答案 2 :(得分:0)

类似于上面的答案,但更完整:

# swift 3 and 4 support 
# define pods that use swift 4 here
swift_4 = ['Cosmos-tvOS', 'XCGLogger-tvOS', 'Cosmos-iOS', 'XCGLogger-iOS']

post_install do |installer|
  installer.pods_project.targets.each do |target|
    swift_version = nil

    if swift_4.include?(target.name)
      swift_version = '4.0'
    else
        swift_version = '3.2'
    end

    if swift_version
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = swift_version
      end
    end
  end
end