“任何”的值类型没有成员 '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”

“任何?”类型的 Swift 3 值没有成员“对象”

在 UserDefaults 中访问字典时,类型“任何”没有下标成员

* 类型的值没有成员 'rx'

“String”类型的值没有成员“stringByAppendingPathComponent”[重复]

“AnyObject”类型的值没有成员年龄