我在iOS应用程序中使用了几个NSComparators,它们通过NSString或NSNumber属性比较对象。这很容易,因为NSString有caseInsensitiveCompare:
而NSNumber有compare:
。我如何比较bool或int?对于布尔值,代码可能会很快纠结,因为我的比较函数采用(bool)ascending
参数。我注意到Objective C对于这类事物通常具有模糊的全局函数。
目前我正在使用此代码来比较布尔值:
NSComparator comp = ^(id id1, id id2) {
ListItem *comp1 = nil,
*comp2 = nil;
if([id1 isKindOfClass:[ListItem class]]){
if(ascending){
comp1 = (ListItem*)id1;
comp2 = (ListItem*)id2;
}else{
comp1 = (ListItem*)id2;
comp2 = (ListItem*)id1;
}
}
if(h1!=nil && h2!=nil){
if((h1.isInBasket && h2.isInBasket) || (!h1.isInBasket && !h2.isInBasket)){
return 0;
} else if(h1.isInBasket && !h2.isInBasket) {
return 1;
} else {
return -1;
}
} else {
return 0;
}
}
答案 0 :(得分:2)
Bools(BOOL
,Boolean
)和整数(int
,long
,unsigned
等)只是简单的C整数类型而且你比较它们与标准C比较运算符<
,>
,==
等相同。char
(也是整数类型),float
等等。命名变体,例如NSInteger
。