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

时间:2014-10-23 14:40:11

标签: ios arrays xcode swift tableview

我更新了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")]

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

2 个答案:

答案 0 :(得分:13)

正如documentation中所述:

  

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

结构体不是类,因此无法强制转换为AnyObject

你应该:

  • Program变成课程
  • 将您的数组定义为Array<Any>
  • 如果您的数组应仅包含Program的实例,请将其声明为Array<Program>

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

附注:数组和词典可以转换为AnyObject,因为它们会自动桥接到NSArrayNSDictionary,这些是类。

答案 1 :(得分:0)

  

检查这个链接你得到了你的answare我最近包裹了我的头   我在Swift中发现的东西很奇怪。斯威夫特提供了两个   称为Any和AnyObject的高级协议。任何都可以用于   两种值类型(如结构)和引用类型(类)   AnyObject只能用于类。

enter link description here