无法调用非函数类型“((AnyObject)-> AnyObject?)!”的值- 斯威夫特 3

Posted

技术标签:

【中文标题】无法调用非函数类型“((AnyObject)-> AnyObject?)!”的值- 斯威夫特 3【英文标题】:Cannot call value of non-function type '((AnyObject) -> AnyObject?)!' - Swift 3 【发布时间】:2016-09-28 03:30:40 【问题描述】:

我正在尝试将我当前的项目转换为 Swift 3,但在将 objectForKey 转换为 objectFor 时遇到了问题。

myData 的类型是AnyObject

之前

let x = myData.objectForKey('myKey')

现在

let x = myData.objectFor('myKey') // not working.

在第二种情况下,XCode 给我错误Cannot call value of non-function type '((AnyObject) -> AnyObject?)!',我不知道如何解决。

有谁知道如何更新objectForKey 方法以及为什么这个转换不起作用?

其他示例:

我在操场上创建了另一个示例来重现此问题。使用的代码行粘贴在下面。运行这个结果和上面说的一样的错误。

var x: AnyObject = ["Hello" : "Goodbye"] as AnyObject
x.objectFor("Hello")

【问题讨论】:

myData 的类型是什么? myData 的类型是 AnyObject。 您确定myDataAnyObject 而不是NSDictionary?我认为objectForKey 仅在NSDictionary 上定义。 @James 是的。它是一个 AnyObject。我添加了另一个示例来演示。 【参考方案1】:

语法已更改为:

let x = myData.objectForKey("myKey")

到:

let x = myData.object(forKey:"myKey")

在 Swift 3 中。

例子:

var x : AnyObject = ["Hello" : "Goodbye"] as AnyObject
x.object(forKey:"Hello")

【讨论】:

以上是关于无法调用非函数类型“((AnyObject)-> AnyObject?)!”的值- 斯威夫特 3的主要内容,如果未能解决你的问题,请参考以下文章

无法调用非函数类型 HTTPURLResponse 的值?

Swift 3 错误“无法调用非函数类型 'UITableView!' 的值” [关闭]

错误:无法调用非函数类型的值

无法调用非函数类型“HTTPURLResponse?”的值

快速轮函数。无法调用非函数类型“Int”的值

Alamofire:无法调用非函数类型“NSHTTPURLResponse”的值?