Swift 2.0,Xcode 7 问题
Posted
技术标签:
【中文标题】Swift 2.0,Xcode 7 问题【英文标题】:Swift 2.0, Xcode 7 issue 【发布时间】:2015-07-01 11:05:31 【问题描述】:我从这里使用 RAMAnimatedTabBarController 模块: https://github.com/Ramotion/animated-tab-bar
我使用 Xcode 6 在 swift 1.2 中开发了我的整个应用程序,并且该应用程序运行良好。我想尝试使用具有 swift 2.0 的 Xcode 7 对我的应用程序进行“侧面加载”。我有太多错误,但我设法解决了大部分错误,但只有三个。
1) 当在 Xcode 6 中完美编译时,来自 RAMAnimatedTabBarController 模块的这行代码抛出了一个错误,指出无法调用该函数:
var constranints = NSLayoutConstraint.constraintsWithVisualFormat(formatString,options:NSLayoutFormatOptions.DirectionRightToLeft,metrics: nil,views: containersDict as [NSObject : AnyObject])
编译器错误是:
不能使用参数列表调用“constraintsWithVisualFormat” 类型'(字符串,选项:NSLayoutFormatOptions,指标:无,视图: [NSObject : AnyObject])'
2) 又抛出了一个异常错误:
链接器命令失败,退出代码为 1(使用 -v 查看调用)
3) 还有一个:
(null): 错误: 无法解析调试映射 “/Users/Rakshith/Library/Developer/Xcode/DerivedData/Blubot-heabwwmhqxxvctaabxkwcpgzsadx/Build/Intermediates/SwiftMigration/Blubot/Products/Debug-iphonesimulator/BlubotTests.xctest/BlubotTests”: 没有这样的文件或目录
我的项目实际上出了什么问题?它仍然设置为 ios 8.3。
【问题讨论】:
废话,废话,废话,但实际的编译器错误消息是什么? 呃?我从字面上复制粘贴了编译器错误消息。 是的在我的评论之后。 在您评论其他 2 个错误已经存在后,我粘贴了第 1 个问题。无论如何,你碰巧有一个解决方案? 是的,我对第一个有想法,这就是我所说的,因为其他错误是链接器错误,而不是编译器错误。 【参考方案1】:禁用位码
Build Settings -> BitCode
【讨论】:
我不知道这是否可行,但 RamAnimatedTabBar 控制器文件已更新以支持 swift 2.0。【参考方案2】:我设法纠正了大多数人在运行 Xcode 7 Beta 和 Xcode 6 时可能会遇到的第二个和第三个错误。 只需按照本步骤中提到的步骤解决这两个错误: Xcode Version 6.1 (6A1030) - Apple Match O-Linker Error - Building
【讨论】:
不行,还没有找到解决办法。【参考方案3】:试试这个方法:
func createViewContainers() -> [String: UIView]
var containersDict = [String: UIView]()
guard let tabBarItems = tabBar.items else
return containersDict
let itemsCount: Int = tabBarItems.count - 1
for index in 0...itemsCount
let viewContainer = createViewContainer()
containersDict["container\(index)"] = viewContainer
var formatString = "H:|-(0)-[container0]"
for index in 1...itemsCount
formatString += "-(0)-[container\(index)(==container0)]"
formatString += "-(0)-|"
let constranints = NSLayoutConstraint.constraintsWithVisualFormat(formatString,
options:NSLayoutFormatOptions.DirectionRightToLeft,
metrics: nil,
views: containersDict)
view.addConstraints(constranints)
return containersDict
【讨论】:
【参考方案4】:如何将小代码从“containersDict as [NSObject : AnyObject]”更改为“containersDict as [String : AnyObject]”。
然后我解决了上述方法的问题。
【讨论】:
'NSMutableDictionary' 不能转换为 '[String : AnyObject]' 这是现在的错误。以上是关于Swift 2.0,Xcode 7 问题的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 2.0 编译器问题 - Swift 2 / Xcode 7
我需要 Xcode 7 和 Swift 2.0 来更新我的应用吗
swift 2.0(XCode 7 beta 5)中的拆分方法