我刚刚在Xcode中创建了一个新的Swift项目.我想知道它正在使用哪个版本的Swift.
如何在Xcode或终端中看到我在项目中使用的Swift版本?
我用谷歌搜索,但无法找出快速等同于什么respondsToSelector:.
这是我唯一能找到的东西(Swift替代respondsToSelector :)但在我的情况下并不太重要,因为它检查委托的存在,我没有委托我只想检查是否存在新的API或者不在设备上运行时,如果没有回到以前版本的api.
我有一个与我的框架捆绑在一起的Swift演示项目.我想确保演示中的Swift代码与Xcode 6(Swift 1.2)和Xcode 7(Swift 2.0)成功编译,无需用户干预.
由于Swift中只有边缘预处理器支持,如何在编译时确定使用哪个版本的Swift或Xcode来编译代码?
现在,这是重要的细节:
没有构建设置或其他需要用户以某种方式指定她正在使用的Swift/Xcode版本的方法.
我一直在想:这是一项微不足道的任务,用Swift怎么可能不可能?
作为一个框架开发人员,这让我感到疯狂,因为Swift项目的成功编译现在完全取决于用户的Xcode版本,我不能要求他们全部"更新到Xcode 6.4",稍后不得不问他们一遍又一遍地"更新到Xcode 7.1".疯了吧!
另一种选择当然是拥有单独的演示项目,管理不同的代码库,每个版本的Swift都有一个.并希望用户知道哪个项目适用于她的Xcode版本.不是一个真正的选择.
遗憾的是,另一种替代方案,即根本不使用任何Swift 2.0的增强功能.有一些语法,类和方法在一个或另一个Swift版本中不起作用,只是因为编译器在较新的Xcode版本中更加挑剔.
如果我使用Mavericks,则仅限于XCode 6.2,以及以下代码:
let setOfNumbers: Set<Int> = [1, 2, 3, 4, 5];
Run Code Online (Sandbox Code Playgroud)
将无法正常工作。因此Set,仅应在Swift 1.2及更高版本中使用。如何打印出程序中正在使用的Swift版本?(就像p RUBY_VERSION使用Ruby一样)
我在使用Xcode 6.4的新机器上进行了一些测试失败,出现此错误:
'NSDictionary' is not implicitly convertible to '[NSObject : AnyObject]'; did you mean to use 'as' to explicitly convert?
Run Code Online (Sandbox Code Playgroud)
在我的机器上(仍在旧的Xcode 6.2上),测试没问题.不幸的是我暂时无法升级我的机器.
关于如何在两个Xcode版本上实现相同行为的任何建议?我怀疑使用了不同的Swift编译器,因为那部分代码根本没有改变......
编辑:找到版本:
swift ×5
xcode ×3
swift2 ×2
compilation ×1
ios ×1
objective-c ×1
preprocessor ×1
selector ×1
terminal ×1