gpt4 book ai didi

ios - 如何将类属性与枚举匹配?

转载 作者:行者123 更新时间:2023-11-28 21:35:36 25 4
gpt4 key购买 nike

我想知道是否有办法简化以下内容( catNSUInteger 对应于 enum :

   if((cat == enum_cat1) & self.cat1) ||
(cat == enum_cat2) & self.cat2) ||
(cat == enum_cat3) & self.cat3) ||
(cat == enum_cat4) & self.cat4))

基本上我有一个类别的枚举和一堆对应于这些属性的 bool 类属性。每当属性匹配 cat是真的,我想要整个 if声明为真实。 必须有更好的方法来做到这一点。它是什么?

最佳答案

为什么不使用位掩码:

typedef enum Category {
Category0 = 0 << 0,
Category1 = 1 << 0,
Category2 = 1 << 1,
Cagegory3 = 1 << 2
};

@interface SomeClass : NSObject
@property (assign) Category category;
...
@end

然后测试:
if (self.category & Category1) {
// Do first thing
} else if ((self.category & Category2) || (self.category & Category3)) {
// Do second or third thing
}

要么:
- (void)doCategory:(Category)category
{
if (self.category & category) {
// Do thing
}
}

像这样设置它:
SomeClass *someClass = [SomeClass new];
someClass.category = Category1|Category3;
[someClass doCategory:Category3];

注意 & 之间的区别和 && .

关于ios - 如何将类属性与枚举匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com