无法将数组转换为Any类型

时间:2016-01-19 01:00:37

标签: swift

我正在通过在线斯坦福iOS课程 - 而且我遇到了一个演员问题。

我有一个任意对象的2D数组

        var totalInfo = [[Any]]()

我正在尝试添加结构数组,如下所示:

        totalInfo.insert(tweet.hashtags, atIndex: 0)
        totalInfo.insert(tweet.urls, atIndex: 1)
        totalInfo.insert(tweet.userMentions, atIndex: 2)
        totalInfo.insert((tweet.media), atIndex: 3)

所有尝试的插入都是公共结构的数组,但我收到一个错误:

**无法将'[Tweet.IndexedKeyword]'类型的值转换为预期的参数类型'[Any]' (Tweet只是包含结构的公共类)

任何想法为什么?我认为看到类型都是公共结构,它们应该算作“任意”数组

1 个答案:

答案 0 :(得分:0)

我的建议是将其取消嵌套

var totalInfo = [Any]()

totalInfo.insert(tweet.hashtags, atIndex: 0)
totalInfo.insert(tweet.urls, atIndex: 1)
totalInfo.insert(tweet.userMentions, atIndex: 2)
totalInfo.insert((tweet.media), atIndex: 3)

任何类型都有点复杂,可能会使编译器混淆,但它应该无关紧要,因为Any可以包含任何类型,包括具有不同类型的数组。

但是,对于编程风格,我不会使用它,因为必须在这样的通用数组中编译并记住它们的索引是很难看的。我要么使用struct对象来存储它们(看起来好像是推文),要么是[String:Any]字典,其中String键存储在枚举中。