Swift3 如何修复无法转换类型的值。。。输入所需的参数类型inout_

Swift3 如何修复无法转换类型的值。。。输入所需的参数类型inout_,swift3,Swift3,我有一个简单的Swift3代码,如果您抱怨[Channel]: var channels = [Channel]() .... for (_, json) in json["entities"] { let channel = Channel(json: json) self.channels += [channel] ^ Cannot convert value

我有一个简单的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 _
        }
这是通道类:

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?
),它返回一个必须展开的可选值。因此,您正在尝试将
+=
应用于
[频道]
[频道?]
,并且类型不兼容。由于定义
+=
的方式,错误消息不太清晰


@安迪。[1] 无法编译您的示例,因为json和json都未定义。[2] 现在,假设您在类通道中正确地创建了一个可失败的初始值设定项init?(json:json){},那么vacawama的解释是正确的。将代码更改为下面的代码应该可以工作

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

嗯,有什么错误吗。。。用完整准确的错误信息更新您的问题,并指出导致错误的行。
var channels = [Channel]()
....

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