web-dev-qa-db-ja.com

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にあるソリューションを試しましたが、うまくいきませんでした。ご案内ください。

10
Yogi

userInfo[NSObject : AnyObject]から[String : AnyObject]に変更します。これは、すべてのConnectionMessage.xxxKey値がStringであることを前提としています。

また、userInfoパラメータに渡すディクショナリが、実際にはタイプStringのキーを持つディクショナリであることを確認する必要があります。

20
rmaddy