我需要获取我的数据库并按ID排序。例如,我在数据库,database_id和内容中有2列。当我在NSLOG的最后一行时,我获得了所有“内容”列的行。但我需要根据database_id排序那些“内容”行,即1,2,3,4,5,6(升序)。帮助???
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *ent = [NSEntityDescription entityForName:@"databaseName" inManagedObjectContext:self.managedObjectContext];
[request setEntity:ent];
NSSortDescriptor *srt = [NSSortDescriptor sortDescriptorWithKey:@"database_id" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:srt]];
NSError *error;
NSArray *result = [self.managedObjectContext executeFetchRequest:request error:&error];
if (!result)
{
//error
}
NSMutableArray *myArray = [[NSMutableArray alloc] initWithArray:[result valueForKey:@"content"]];
答案 0 :(得分:3)
您的database_id
存储为字符串,因此ID按字符串排序:
1, 11, 15, 2, 3, 5
最好的解决方案是将database_id
存储为数字(例如“整数32”)
数据库中。
作为一种解决方法,您可以保留字符串,并在中使用特殊的比较函数 排序描述符:
NSSortDescriptor *srt = [NSSortDescriptor sortDescriptorWithKey:@"database_id"
ascending:YES
selector:@selector(localizedStandardCompare:)];
localizedStandardCompare
执行“Finder-like”比较。特别是,包含的字符串
数字按其数值排序。