排序核心数据请求升序

时间:2015-05-06 14:17:41

标签: objective-c xcode core-data nsfetchrequest

我正在尝试使用" groupID"升序我的获取请求。这是一个字符串类型但在其中保存一个数字,在计数器的形式下,问题是返回的数组不是"正确"排序,而不是我希望它,因为它返回排序为:0,1,10,2,3,4,5,6,7,8,9而不是预期的0,1,2的元素, 3 ... 9,10

我找到了两个解决方案: 1 - 将核心数据属性从字符串修改为int(最不需要的场景) 要么 2 - 从核心数据中获取所有元素,在数组中检索所有元素,使用数组的大小运行for循环,在for循环内部使用for循环计数器进行另一次带谓词的提取,并且我可以保存在一个数组中的返回实体,所以通过完成所有这些,我将获得一个带有实体

的排序数组

这是我目前的代码:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SuggestedChannelsEntity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"groupID" ascending:YES];
NSArray *sortDescription = [[NSArray alloc] initWithObjects:sort, nil];
[fetchRequest setSortDescriptors:sortDescription];

NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

1 个答案:

答案 0 :(得分:1)

您可以使用其中一个排序选择器“localizedStandardCompare:”,如下所示:

NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"groupID" ascending:YES selector:@selector(localizedStandardCompare:)];

如果数字不是负数,这似乎工作正常。