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

Swift: cannot invoke 'addObject' with an argument list of type '(AnyObject?!)'

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

我正在尝试用本教程中的数据填充此数组:https://youtu.be/0qE8olxB3Kk 但我的数据不像他那样是简单的字符串,它们是从 JSON(字典数组)中获取的) 并且属于 AnyObject?! 类型 如果需要,我可以用我的做法更新这个主题,但如果它们没用,我不会用过多的代码重载这个 post。

当我像这样填充数组时:self.textArray.addObject(summary)

我收到错误消息 cannot invoke 'addObject' with an argument list of type '(AnyObject?!)'

其中 summary 是我的 JSON 词典之一,类型为 AnyObject?!

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

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

此致,

fselva

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

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

您需要将可选的展开两次。

var textArray: NSMutableArray! = NSMutableArray()

var a:AnyObject?! = "hello"

你可以用强制展开来做到这一点:

textArray.addObject(a!!)

但这是不安全的,如果任一个选项是 nil 就会崩溃。安全地做到这一点的方法是使用可选绑定:

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