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/L​​ibrary/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

swift 2.0(XCode 7 beta 5)中的拆分方法

变量已编写但从未在 Swift 2.0 和 Xcode 7 中使用

Swift 2.0 Xcode 7.1 图像选择器前置摄像头图像在选择时旋转