我已经创建了以下协议和符合协议的枚举,如下所示:
protocol HamburgerOption {
static var all :[HamburgerOption] { get }
var title :String { get }
}
enum Meat :HamburgerOption {
private static var allCases :[Meat] = [.chicken, .beef]
case chicken
case beef
static var all :[HamburgerOption] {
return Meat.allCases
}
var title :String {
switch self {
case .chicken:
return "Chicken"
case .beef:
return "Beef"
}
}
}
当我创建下面的结构时,它给了我错误:
// Value of type 'Meat.Type' does not conform to expected element type //'HamburgerOption'
struct HamburgerOptions {
var all :[HamburgerOption] {
return [Meat, Sauces]
}
}
发布于 2018-09-10 08:30:08
您的属性被定义为返回符合HamburgerOption
的实例数组。但是,通过返回[Meat, Sauces]
,您返回的是一个类型数组,而不是实例。您需要做的是返回一个实例数组。您只需为您的类型添加all
方法的结果即可:
return Meat.all + Sauces.all
(对于任何想要成为谢尔登·库珀的人来说,是的,如果他真的需要创建一组类型,他就需要用.self
推迟每一个类型)
https://stackoverflow.com/questions/52247532
复制相似问题