【发布时间】:2016-09-29 00:58:06
【问题描述】:
我正在尝试将此库 (https://github.com/dankogai/swift-json) 中的以下代码转换为 Swift 3 兼容代码。
只剩下几个错误需要解决。我现在卡在这条线上了。
extension JSON : Sequence {
我得到的错误是 'Type 'JSON' does not conform to protocol 'Sequence'
它的完整上下文如下。我查看了源代码以查看 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)!))
两者都给出相同的错误,'Cannot convert return expression of type '(String,JSON)' to return type '(AnyObject, JSON)?'
我假设我必须将返回语句中的值 i 和 k 强制转换为 AnyObject?不过我不确定。
这是它给我的建议的详细截图。不知道如何更改代码。
【问题讨论】:
-
尝试用
Any替换AnyObject
标签: json swift swift2 swift3 ios10