Swift3 如何修复无法转换类型的值。。。输入所需的参数类型inout_
我有一个简单的Swift3代码,如果您抱怨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
[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!]
}
}