比较布尔和整数

时间:2012-01-08 18:04:26

标签: objective-c ios string-comparison

我在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;
    }

}

1 个答案:

答案 0 :(得分:2)

Bools(BOOLBoolean)和整数(intlongunsigned等)只是简单的C整数类型而且你比较它们与标准C比较运算符<>==等相同。char(也是整数类型),float等等。命名变体,例如NSInteger