【问题标题】:Multiple enum value in swiftswift中的多个枚举值
【发布时间】:2016-02-18 16:43:00
【问题描述】:

我想创建一个像

这样的枚举值
view.autoresizingMask = [UIViewAutoresizing.FlexibleBottomMargin, UIViewAutoresizing.FlexibleHeight]

我想不出要设计enum 来接受多个变量。

我想设计下面的。

enum ActivityType: Int {
    case Event = 1
    case CommentOnEvent = 2
    case CommentOnComment = 3
}
var activityType = [CommentOnEvent, CommentOnComment]

var activityType = Event

【问题讨论】:

  • 展示您尝试过的内容并解释您在尝试使用它时遇到的问题

标签: ios swift cocoa-touch enums


【解决方案1】:

这不是enum,而是符合OptionSetTypestruct。您可以按照以下模式创建一个:

struct AnimalTraits : OptionSetType {
    let rawValue: Int
    init(rawValue: Int) { self.rawValue = rawValue }

    static let LaysEggs = AnimalTraits(rawValue: 1)
    static let GivesLiveBirth = AnimalTraits(rawValue: 2)
    static let HasFur = AnimalTraits(rawValue: 4)
    static let HasScales = AnimalTraits(rawValue: 8)

    static let Mammal: AnimalTraits = [GivesLiveBirth, HasFur]
    static let Fish: AnimalTraits = [LaysEggs, HasScales]
}

那么你可以这样使用它:

struct Animal {
    let name: String
    let traits: AnimalTraits
}

let salmon = Animal(name: "Salmon", traits: .Fish)

salmon.traits.contains(.HasFur) //false
salmon.traits.contains(.HasScales) //true

let bizarro = Animal(name: "Fictional Animal", traits: [.LaysEggs, .GivesLiveBirth])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2014-09-21
    相关资源
    最近更新 更多