“任何”的值类型没有成员 'objectforKey' Swift 3 转换
Posted
技术标签:
【中文标题】“任何”的值类型没有成员 \'objectforKey\' Swift 3 转换【英文标题】:Value type of "Any" has no member 'objectforKey' Swift 3 conversion“任何”的值类型没有成员 'objectforKey' Swift 3 转换 【发布时间】:2016-09-19 07:41:52 【问题描述】:由于 swift 3 升级,我目前正面临这个问题(“Any”的值类型没有成员 'objectforKey')。有人知道为什么吗?
这是我有错误的代码行
let bookName:String = (accounts[indexPath.row] as AnyObject).objectForKey("bookName") as! String
*accounts 是一个数组。
【问题讨论】:
【参考方案1】:好的,基本上是 .objectForKey 需要更改如下:
let bookName:String = (accounts[indexPath.row] as AnyObject).object(forKey:"bookName") as! String
【讨论】:
【参考方案2】:一如既往,不要在 Swift 中使用 NS(Mutable)Array
/ NS(Mutable)Dictionary
。这两种类型都缺少类型信息并返回Any
,这是 Swift 中最未指定的类型。
将accounts
声明为 Swift 数组
var accounts = [[String:Any]]()
那你就可以写了
let bookName = accounts[indexPath.row]["bookName"] as! String
另一个不要:不要注释编译器可以推断的类型。
【讨论】:
以上是关于“任何”的值类型没有成员 'objectforKey' Swift 3 转换的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 - 'Any?' 类型的值没有成员“valueForKey”
在 UserDefaults 中访问字典时,类型“任何”没有下标成员