プロジェクトが組み込まれています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にあるソリューションを試しましたが、うまくいきませんでした。ご案内ください。
userInfo
を[NSObject : AnyObject]
から[String : AnyObject]
に変更します。これは、すべてのConnectionMessage.xxxKey
値がString
であることを前提としています。
また、userInfo
パラメータに渡すディクショナリが、実際にはタイプString
のキーを持つディクショナリであることを確認する必要があります。