当前位置 : 主页 > 手机开发 > 其它 >

swift – 枚举值和谓词

来源:互联网 收集:自由互联 发布时间:2021-06-11
有没有办法在不调用rawValue的情况下在NSPredicate中使用枚举值? 例如: enum MyEnum: Int32 { case A, B, C}var predicate: NSPredicate = NSPredicate(format: "prop_status == %i", argumentArray: [MyEnum.A]) 我正在考虑扩
有没有办法在不调用rawValue的情况下在NSPredicate中使用枚举值?

例如:

enum MyEnum: Int32 {
    case A, B, C
}

var predicate: NSPredicate = NSPredicate(format: "prop_status == %i",
                                         argumentArray: [MyEnum.A])

我正在考虑扩展NSPredicate以便它可以处理MyEnum但不知道如何做到这一点.

一种方法是使用CustomStringConvertible,当您遵循此协议时,您需要实现返回String类型的描述方法.然后你可以使用String.init方法来获取字符串值.

有点像这样,

enum MyEnum: Int32, CustomStringConvertible {
    case A, B, C

    var description: String {
        return "\(rawValue)"
    }
}

var predicate: NSPredicate = NSPredicate(format: "prop_status == %@",
    argumentArray: [String(MyEnum.A)])
网友评论