gpt4 book ai didi

json - 针对 AnyObject JSON 错误的 Swift 2 到 3 迁移

转载 作者:行者123 更新时间:2023-11-28 16:09:33 25 4
gpt4 key购买 nike

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

只剩下少数错误需要解决。我现在卡在这条线上了。

extension JSON : Sequence {

我得到的错误是'类型'JSON'不符合协议(protocol)'Sequence'

其完整上下文如下。我查看了源代码,看看 Sequence 是否已经作为一种协议(protocol)存在,以查看如何符合但不确定它来自哪里。我知道这在 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 语句也会给出错误。

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

和...

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

两者都给出相同的错误,“无法将类型为‘(String,JSON)’的返回表达式转换为返回类型‘(AnyObject, JSON)?’

我假设要解决我必须将返回语句中的值 i 和 k 转换为 AnyObject 的问题?不过我不确定。

这是它给我的建议的详细截图。虽然还不确定如何更改代码。

enter image description here

最佳答案

return (i, JSON(o[i])) ===> return (i as AnyObject, JSON(o[i]))

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

关于json - 针对 AnyObject JSON 错误的 Swift 2 到 3 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com