"Type'Program'不符合'任何对象'协议"

pat*_*lis 3 arrays xcode tableview ios swift

我更新了xcode,现在我的项目出错,我不知道如何处理它.

struct Program {
    let name : String
    let url : String
}

self.arrayOfPrograms = [Program(name: "First", url: "http://1.com"), Program(name: "Second", url: "http://2.com"), Program(name: "Third", url: "http://2.com")]
Run Code Online (Sandbox Code Playgroud)

我收到错误"Type'Program'不符合协议'任何对象'"

Ant*_*nio 13

文档中所述:

AnyObject可以表示任何类类型的实例.

struct不是类,因此无法转换为 AnyObject

你应该:

  • Program成一类
  • 将数组定义为 Array<Any>
  • 如果您的数组应该只保存实例Program,请将其声明为Array<Program>

毋庸置疑,最后一个是最好的解决方案,而第一个是我不推荐的解决方案,因为它需要你进行设计更改(这就是你将它声明为值类型而不是引用类型的原因).

旁注:数组和字典可以转换为,AnyObject因为它们分别自动桥接到NSArrayNSDictionary,它们是类.