Неоднозначная ссылка на "индекс" участника в Swift 3

У меня есть проект, построенный в Swift 1.5. Когда я преобразовал код в swift 3.0, он начал показывать мне ошибки в каждом выражении "if" в следующем коде:

convenience init?(userInfo: [NSObject: AnyObject]) {
    guard let statusString = userInfo[ConnectionMessage.StatusKey] as? String else {
        return nil
    }
    guard let status = ConnectionStatus(string: statusString) else {
        return nil
    }

    guard let connectionId = userInfo[ConnectionMessage.ConnectionIdKey]?.longLongValue else {
        return nil
    }

    var ssid = ""

    if let newSsid = userInfo[ConnectionMessage.SSIDKey] as? String {
        ssid = newSsid
    }

    var password = ""
    if let pw = userInfo[ConnectionMessage.PasswordKey] as? String {
        password = pw
    }

    let buyerName = userInfo[ConnectionMessage.BuyerNameKey] as? String

    self.init(status: status, connectionId: connectionId, ssid: ssid, password: password, buyerName: buyerName)
}

Ошибка

Неоднозначная ссылка на членский индекс

Я попробовал решения, найденные на StackOverflow, но не повезло. Пожалуйста, направляйте.

Ответ 1

Измените userInfo с [NSObject : AnyObject] на [String : AnyObject]. Это предполагает, что все ваши значения ConnectionMessage.xxxKey String.

Вам также необходимо убедиться, что словарь, который вы передаете в параметр userInfo, на самом деле является словарем с ключами типа String.