gpt4 book ai didi

swift3 - 如何修复 Cannot convert value of type ... to expected argument type inout _

转载 作者:行者123 更新时间:2023-12-01 12:25:45 25 4
gpt4 key购买 nike

我有这个简单的 Swift3 代码,如果提示 [Channel]:

        var channels = [Channel]()
....

for (_, json) in json["entities"] {
let channel = Channel(json: json)
self.channels += [channel]
^ Cannot convert value of type [Channel] to expected argument type inout _
}

这是 channel 类:

class Channel {

var uuid: String
var title: String?
var isPublic: Bool

init(uuid: String) {
self.uuid = uuid
self.title = ""
self.isPublic = false
}

init?(json: JSON) {
self.uuid = json["uuid"].stringValue
self.title = json["title"].stringValue
self.isPublic = json["public"].boolValue
}
}

一些帖子表明该消息可能与闭包有关,但我在这里看不到闭包。

如何在简单的 for 循环中修复此错误?

最佳答案

错误来自 += 语句。 Channel(json:) 是一个可失败的初始化器(注意 init?),它返回一个必须被解包的 Optional。因此,您尝试将 += 应用于 [Channel][Channel?] 并且类型不兼容。由于 += 的定义方式,错误消息不太清楚。

public func +=<C : Collection>(lhs: inout [C.Iterator.Element], rhs: C)

Swift 无法协调 rhs 的类型,即 [Channel?]lhs 的类型,即 [ channel ].

修复方法是解开由可失败初始化器 Channel(json:) 返回的 Channel?:

var channels = [Channel]()
....

for (_, json) in json["entities"] {
if let channel = Channel(json: json) {
self.channels += [channel]
}
}

关于swift3 - 如何修复 Cannot convert value of type ... to expected argument type inout _,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007665/

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