从 Swift 3 更新项目时出现便利初始化错误
Convenience init error when updating project from Swift 3
我正在更新在 Swift 3 中创建的项目,现在出现以下错误。
The compiler is unable to type-check this expression in reasonable
time; try breaking up the expression into distinct sub-expressions
关于这个错误有很多答案,但我不明白我应该如何在下面的代码中创建属性的子表达式,因为需要这些属性。
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)
}
我正在更新在 Swift 3 中创建的项目,现在出现以下错误。
The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
关于这个错误有很多答案,但我不明白我应该如何在下面的代码中创建属性的子表达式,因为需要这些属性。
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)
}