将 Xcode 更新到 7.0 后出现错误

Posted

技术标签:

【中文标题】将 Xcode 更新到 7.0 后出现错误【英文标题】:error after updating the Xcode to 7.0 【发布时间】:2015-09-19 19:20:28 【问题描述】:

我正在用 Swift 开发一个 ios 应用程序。 当我将 Xcode 更新到 7.0 时,我在 swiftyJSON 中遇到错误。

 static func fromObject(object: AnyObject) -> JSONValue? 
    switch object 
    case let value as NSString:
        return JSONValue.JSONString(value as String)
    case let value as NSNumber:
        return JSONValue.JSONNumber(value)
    case let value as NSNull:
        return JSONValue.JSONNull
    case let value as NSDictionary:
        var jsonObject: [String:JSONValue] = [:]
        for (k:AnyObject, v:AnyObject) in value // **THIS LINE- error: "Definition conflicts with previous value"**
            if let k = k as? NSString 
                if let v = JSONValue.fromObject(v) 
                    jsonObject[k] = v
                 else 
                    return nil
                
            
        

有什么问题?可以帮忙吗?

【问题讨论】:

【参考方案1】:
 for (k:AnyObject, v:AnyObject) in value  .. 

必须用 Swift 2 写成

for (k, v) : (AnyObject, AnyObject) in value  .. 

来自 Xcode 7 发行说明:

模式中不再允许使用类型注释,并考虑 外围声明的一部分。这意味着之前的代码 写成:

var (a : Int, b : Float) = foo()

需要写成:

var (a,b) : (Int, Float) = foo()

如果需要显式类型注释。以前的语法是 与元组元素标签模棱两可。

但在您的情况下,实际上根本不需要显式注释:

for (k, v) in value  .. 

因为NSDictionary.Generator 已经定义为生成器 返回(key: AnyObject, value: AnyObject) 元素。

【讨论】:

以上是关于将 Xcode 更新到 7.0 后出现错误的主要内容,如果未能解决你的问题,请参考以下文章

将 Xcode 6 beta 6 更新到 beta 7 后出现“可选错误”

更新到 Xcode 11 Swift 5.1 后出现 Google AdMob 错误

Xcode 7.0 Swift 更新问题

将 Xcode 从 5.0 更新到 5.1 后生成错误

更新到 Xcode 13 后出现错误破坏了应用程序

更新到 Xcode 9 / Swift 4 后 AVCapture 出现奇怪的编译错误 [重复]