Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift类型橡皮擦-创建协议阵列_Swift_Enums - Fatal编程技术网

Swift类型橡皮擦-创建协议阵列

Swift类型橡皮擦-创建协议阵列,swift,enums,Swift,Enums,我正在尝试创建一个包装器结构,这样我就可以有一个协议数组。 我已经看了好几段关于打字橡皮擦的视频,但我似乎无法正确地编造出一个神奇的解决方案 private lazy var properties: [AnyProperty] = [ AnyProperty(property: shape), AnyProperty(property: color), AnyProperty(property: number), AnyProperty(property: shading) ]

我正在尝试创建一个包装器结构,这样我就可以有一个协议数组。 我已经看了好几段关于打字橡皮擦的视频,但我似乎无法正确地编造出一个神奇的解决方案

private lazy var properties: [AnyProperty] = [
  AnyProperty(property: shape),
  AnyProperty(property: color),
  AnyProperty(property: number),
  AnyProperty(property: shading)
]

protocol Property {
  static var allValues : [Self] {get}
}

struct AnyProperty<P : Property>:Property {
   private var property : P
   init(property : P){
      self.property = property
   }
   static var allValues: [AnyProperty<P>] {
      get{ return P.allValues as! [AnyProperty<P>] }
   }
}
private lazy var属性:[AnyProperty]=[
AnyProperty(属性:形状),
AnyProperty(属性:颜色),
AnyProperty(属性:编号),
AnyProperty(属性:着色)
]
协议属性{
静态变量allValues:[Self]{get}
}
struct AnyProperty:属性{
私有var属性:P
init(属性:P){
self.property=属性
}
静态变量allValues:[AnyProperty

]{ 获取{return P.allValues as![AnyProperty

]} } }

我发现我的主要问题之一是无法返回property.allValues。可能我的最后一行代码不是正确的get一致性。同样,主要目标是创建属性数组<代码>颜色,
形状
编号
着色
都是符合属性协议的枚举

谢谢你,我真的很感谢你花时间来看这个。我正在努力进行类型擦除