Ios 从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

我正在更新Swift 3中的一个项目,现在出现以下错误

编译器无法在中对该表达式进行类型检查 时间尝试将表达式拆分为不同的子表达式

关于这个错误有很多答案,但我不明白我应该如何在下面的代码中创建属性的子表达式,因为我需要将这些属性放在一起

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:对我来说仍然没有意义,因为你没有提供答案,而我无法重现这个问题。