我有一个带有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];
}];