0

我有一个 NSArray 与人们的状态。(例如在线,离线,...)现在我从我的核心数据库中得到了这个。该核心数据库从 Web 服务中获取对象。现在我需要另一个状态(注销)到我的数组的末尾。这就是我在代码中所做的。

_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];

就像你看到的那样,我给了我的“注销状态”ID 0,因为我确信那个 ID 是可用的。这是我的 NSArray 和 ID 的排序方法。

  • 注销 -> ID 0
  • 在线 -> ID 1
  • 离线 -> ID 2
  • 缺席 -> ID 3

现在我希望我的数组看起来像这样。

  • 在线 -> ID 1
  • 离线 -> ID 2
  • 缺席 -> ID 3
  • 注销 -> ID 0

任何人都有一个 ID 我怎么能做到这一点?

4

1 回答 1

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];
}];
于 2013-01-22T16:10:29.260 回答