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の順序は次のとおりです。

  • ログアウト->ID0
  • オンライン->ID1
  • オフライン->ID2
  • 不在->ID3

今、私は私の配列をこのように見せたいです。

  • オンライン->ID1
  • オフライン->ID2
  • 不在->ID3
  • ログアウト->ID0

誰かが私がこれを行うことができる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 に答える