是否可以创建一个struct实例数组?

时间:2016-03-28 17:36:15

标签: arrays swift struct swift2

我正在尝试创建一个这样的struct实例数组:

let installers: [AnyObject] = [Homebrew(), Ls()]

但是我收到了这个错误:

value of type 'Homebrew' does not conform to expected element type 'AnyObject'

当我给数组没有类型时,我得到一个模糊的类型错误,它需要更多的上下文。

是否有可能完成我想要做的事情?

我用Google搜索过,但我找不到任何东西。

3 个答案:

答案 0 :(得分:5)

对于结构使用Any而不是AnyObject

let installers: [Any] = [Homebrew(), Ls()]

答案 1 :(得分:2)

正如Rob上面提到的,我创建了一个简单的协议类型InstallerType来帮助你解决这个问题。它不是使其符合Any或AnyObject协议,而是将其与某些特定类型相符合,以更好的方式对对象进行分类。

extension Homebrew: InstallerType { }
extension Ls: InstallerType { }

let installers: [InstallerType] = [Homebrew(), Ls()]

答案 2 :(得分:2)

根据@RobNapier的评论建议,我建立了一个protocol。由于structs都使用idcommand常量,我想出了这个:

protocol CKInstall {
  var id: String {get}
  var command: [String] {get}
}

问题解决了!