簡體   English   中英

對ID排序NSArray

[英]sorting NSArray on ID

我有一個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

有人知道我該怎么做嗎?

更改此:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM