J. *_*ave 4 sorting objective-c nsmutablearray
我有一个类(from NSObject)包含:
NSString name
int      position
float    speed
然后我NSMutableArray从这个类创建一个对象的数组().我想通过'speed'值对数组进行排序,这是一个float.
我最初的float值是as NSNumber和intas NSInteger,并且我成功排序:
[myMutableArray sortUsingFunction:compareSelector context:@selector(position)];
myMutableArray我的对象数组在哪里.
这是功能:
static int compareSelector(id p1, id p2, void *context) {
    SEL methodSelector = (SEL)context;
    id value1 = [p1 performSelector:methodSelector];
    id value2 = [p2 performSelector:methodSelector];
    return [value1 compare:value2];
}
现在我正在使用int而不是NSInteger,上面的代码不起作用.是否有一个更低级的命令,我应该用它来执行排序?谢谢!
与drawingonward类似,我建议在你的类中添加一个比较方法:
- (NSComparisonResult)compareSpeed:(id)otherObject
{
    if ([self speed] > [otherObject speed]) {
        return NSOrderedDescending;
    } else if ([self speed] < [otherObject speed]) {
        return NSOrderedAscending;
    } else {
        return NSOrderedSame;
    }
}
(你可以使用三元运算符崩溃if- else if- 或者如果是带有方法的对象(例如NSNumber),你可以.)elsetest ? trueValue : falseValuespeedcompare:return [[self speed] compare:[otherObject speed]];
然后你可以排序
[myMutableArray sortUsingSelector:@selector(compareSpeed:)];
正如Georg在评论中所建议的那样,您也可以使用NSSortDescriptor; 如果你的目标是10.6,你也可以使用块和sortUsingComparator:(NSComparator)cmptr.
| 归档时间: | 
 | 
| 查看次数: | 3167 次 | 
| 最近记录: |