sorting NSArray on ID



我有一个带有statussen of people的NSArray。(例如:在线、离线……)这是我从core数据库中得到的。core数据库从webservice获取对象。现在我需要数组末尾的另一个状态(Logout)。这就是我在代码中所做的。

_arrStatus = [[NSMutableArray alloc]init];
    for (Status *status in matches) {
        [_arrStatus addObject:status];
    }
    BOOL logout = false;
    for (Status *status in matches) {
        if([status.cs_id isEqualToNumber:[NSNumber numberWithInt:0]]){
            logout = true;
        }
    }
    if(!logout){
        Status* newStatus = [NSEntityDescription insertNewObjectForEntityForName:@"Statussen" inManagedObjectContext:context];
        newStatus.cs_id = [NSNumber numberWithInt:0];
        newStatus.cs_name = @"Logout";
        [_arrStatus addObject:newStatus];
    } 
    NSError *error = nil;
    [context save:&error];

就像你可以看到的,我给我的'Logout status' ID 0,因为我确信,那个ID是可用的。这里是如何订购我的NSArray和ID。

  • 注销-> ID 0
  • Online -> ID 1
  • Offline -> ID 2
  • 缺席-> ID 3

现在我希望我的数组是这样的

  • Online -> ID 1
  • Offline -> ID 2
  • 缺席-> ID 3
  • 注销-> ID 0

有人知道我该怎么做吗?

修改如下:

if(!logout){
    Status* newStatus = [NSEntityDescription insertNewObjectForEntityForName:@"Statussen" inManagedObjectContext:context];
    newStatus.cs_id = [NSNumber numberWithInt:0];
    newStatus.cs_name = @"Logout";
    [_arrStatus addObject:newStatus];
} 

:

if(!logout){
    Status* newStatus = [NSEntityDescription insertNewObjectForEntityForName:@"Statussen" inManagedObjectContext:context];
    newStatus.cs_id = [NSNumber numberWithInt:0];
    newStatus.cs_name = @"Logout";
    [_arrStatus insertObject:newStatus atIndex:0];
} 

将日志放在数组的前面。或者,如果你需要对数组进行排序,你可以使用这样的代码:

NSArray *sortedArray = [_arrStatus sortedArrayUsingComparator: ^(id obj1, id obj2) {
    return (NSComparisonResult)[(Status*)obj1.cs_id compare:(Status*)obj2.cs_id];
}];

最新更新