Swift:无法使用类型'(AnyObject?!)'的参数列表调用'addObject'

时间:2015-06-05 12:35:10

标签: ios arrays json swift populate

我创建了一个数组,空atm:var textArray: NSMutableArray! = NSMutableArray()

我正在尝试使用像本教程这样的数据填充此数组:https://youtu.be/0qE8olxB3Kk但我的数据并不像他那样简单,它们来自JSON(字典数组)并且类型为{ {1}}我可以根据需要更新此主题,但如果这些帖子没用,我不会用过多的代码重载此帖子。

当我像这样填充我的数组时:AnyObject?!

我收到错误消息self.textArray.addObject(summary)

其中cannot invoke 'addObject' with an argument list of type '(AnyObject?!)'是我的JSON字典之一,类型为summary

我知道数组应该由AnyObject?!类型的数据填充。 有没有办法将AnyObject转换为AnyObject?!?我没有看到像AnyObject这样的任何类型,所以问题就在那里,我不知道......

感谢您的帮助,我可以通过HTTP Post Post或任何其他信息从JSON中提取字典来更新此主题。

此致

fselva

2 个答案:

答案 0 :(得分:2)

您必须双重展开 AnyObject?!变量:

let obj = "Alice" as AnyObject?!
var arr = [AnyObject]()
arr.append(obj!!)

答案 1 :(得分:2)

您需要打开两次可选项。

var textArray: NSMutableArray! = NSMutableArray()

var a:AnyObject?! = "hello"

你可以用强制解包来做到这一点:

textArray.addObject(a!!)

但这是不安全的,如果其中一个是nil,则会崩溃。安全地使用它的方法是使用可选的绑定:

if let temp1 = a, temp2 = temp1 {
    textArray.addObject(temp2)
}