Удобная ошибка инициализации при обновлении проекта из Swift 3 - PullRequest
0 голосов
/ 26 апреля 2019

Я обновляю проект, созданный в 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(),
    ])
  }
}

Буду признателен за любую помощь или направление, спасибо

1 Ответ

1 голос
/ 26 апреля 2019

Объявление свойств перед передачей в назначенный 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...