我正在尝试使用" 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];
答案 0 :(得分:1)
您可以使用其中一个排序选择器“localizedStandardCompare:”,如下所示:
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"groupID" ascending:YES selector:@selector(localizedStandardCompare:)];
如果数字不是负数,这似乎工作正常。