任何对象JSON错误

时间:2016-09-29 00:58:07

标签: json swift swift2 swift3 ios10

我试图将以下代码从此库(https://github.com/dankogai/swift-json)转换为Swift 3兼容代码。

只剩下几个错误要解决。我现在坚持这条线。

extension JSON : Sequence {

我得到的错误是' Type' JSON'不符合协议'序列'

其完整背景如下。我查看了源代码,看看Sequence是否已作为协议存在,以了解如何符合但不确定它来自何处。我知道这在Swift 2中有效。

extension JSON : Sequence {
    public func generate()->AnyIterator<(AnyObject,JSON)> {
        switch _value {
        case let o as NSArray:
            var i = -1
            return AnyIterator {
                i=i+1
                if i == o.count { return nil }
                return (i, JSON(o[i]))
            }
        case let o as NSDictionary:
            var ks = Array(o.allKeys.reversed())
            return AnyIterator {
                if ks.isEmpty { return nil }
                if let k = ks.removeLast() as? String {
                    return (k, JSON(o.value(forKey: k)!))
                } else {
                    return nil
                }
            }
        default:
            return AnyIterator{ nil }
        }
    }
    public func mutableCopyOfTheObject() -> AnyObject {
        return _value.mutableCopy as AnyObject
    }
}

如果以某种方式连接,则返回语句也会出错。

return (i, JSON(o[i]))

和...

return (k, JSON(o.value(forKey: k)!))

两者都给出相同的错误,&#39;无法转换类型&#39;(String,JSON)&#39;的返回表达式。返回类型&#39;(AnyObject,JSON)?&#39;

我假设要修复我必须将返回语句中的值i和k转换为AnyObject?我不确定。

以下是我给出的建议的详细截图。不知道如何更改代码。

enter image description here

1 个答案:

答案 0 :(得分:1)

return(i,JSON(o [i]))===&gt; return(我作为AnyObject,JSON(o [i]))

swift3中的数据类型比swift2更严格。