Ios 从Swift 3更新项目时出现便利初始化错误
我正在更新Swift 3中的一个项目,现在出现以下错误 编译器无法在中对该表达式进行类型检查 时间尝试将表达式拆分为不同的子表达式 关于这个错误有很多答案,但我不明白我应该如何在下面的代码中创建属性的子表达式,因为我需要将这些属性放在一起Ios 从Swift 3更新项目时出现便利初始化错误,ios,swift,xcode,initialization,Ios,Swift,Xcode,Initialization,我正在更新Swift 3中的一个项目,现在出现以下错误 编译器无法在中对该表达式进行类型检查 时间尝试将表达式拆分为不同的子表达式 关于这个错误有很多答案,但我不明白我应该如何在下面的代码中创建属性的子表达式,因为我需要将这些属性放在一起 extension SJTSettings { convenience init(width: Int? = nil, height: Int? = nil, videoCodec: Stri
extension SJTSettings {
convenience init(width: Int? = nil,
height: Int? = nil,
videoCodec: String? = nil,
videoBitrate: Int? = nil,
keyframeInterval: Int? = nil,
h264Profile: String? = nil,
audioCodec: Int? = nil,
audioBitrate: Int? = nil)
{
self.init(properties: [ // where the error warning appears
"width": width ?? NSNull(),
"height": height ?? NSNull(),
"videoCodec": videoCodec ?? NSNull(),
"videoBitrate": videoBitrate ?? NSNull(),
"keyframeInterval": keyframeInterval ?? NSNull(),
"h264Profile": h264Profile ?? NSNull(),
"audioCodec": audioCodec ?? NSNull(),
"audioBitrate": audioBitrate ?? NSNull(),
])
}
}
任何帮助或指导都将不胜感激,感谢在传递到指定的init之前声明属性应有助于类型推断
convenience init(width: Int? = nil,
height: Int? = nil,
videoCodec: String? = nil,
videoBitrate: Int? = nil,
keyframeInterval: Int? = nil,
h264Profile: String? = nil,
audioCodec: Int? = nil,
audioBitrate: Int? = nil)
{
let properties: [String: Any] = [
"width": width ?? NSNull(),
"height": height ?? NSNull(),
"videoCodec": videoCodec ?? NSNull(),
"videoBitrate": videoBitrate ?? NSNull(),
"keyframeInterval": keyframeInterval ?? NSNull(),
"h264Profile": h264Profile ?? NSNull(),
"audioCodec": audioCodec ?? NSNull(),
"audioBitrate": audioBitrate ?? NSNull(),
]
self.init(properties: properties)
}
init(属性:)
是如何声明的?它采用什么类型的参数?这是由类型推断系统引起的。为了解决这个问题,我通常只指定我正在设置的对象的显式类型。现在它更有意义了。@STerrier:对我来说仍然没有意义,因为你没有提供答案,而我无法重现这个问题。