在Swift 3中对成员'下标'的歧义引用
问题描述:
我有一个嵌入Swift 1.5的项目。当我转换的代码,SWIFT 3.0它开始显示我的错误在下面的代码每个“if”语句:在Swift 3中对成员'下标'的歧义引用
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
的字典。
谢谢。得到它了。你能解释一下为什么它在以前版本的swift中工作,为什么现在不工作? – Yogi
我只学过Swift 3.0,所以我不知道它是如何处理旧版本的。 – rmaddy