首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么不能在Swift中创建符合协议的对象数组?

为什么不能在Swift中创建符合协议的对象数组?
EN

Stack Overflow用户
提问于 2018-09-10 02:37:19
回答 1查看 53关注 0票数 -1

我已经创建了以下协议和符合协议的枚举,如下所示:

代码语言:javascript
复制
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"
        }
    }
}

当我创建下面的结构时,它给了我错误:

代码语言:javascript
复制
// Value of type 'Meat.Type' does not conform to expected element type //'HamburgerOption'

    struct HamburgerOptions  {

        var all :[HamburgerOption] {
            return [Meat, Sauces]
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 08:30:08

您的属性被定义为返回符合HamburgerOption的实例数组。但是,通过返回[Meat, Sauces],您返回的是一个类型数组,而不是实例。您需要做的是返回一个实例数组。您只需为您的类型添加all方法的结果即可:

代码语言:javascript
复制
return Meat.all + Sauces.all

(对于任何想要成为谢尔登·库珀的人来说,是的,如果他真的需要创建一组类型,他就需要用.self推迟每一个类型)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52247532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档