Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone-分类“;10、20、30“;核心数据的正确顺序_Iphone_Core Data - Fatal编程技术网

iPhone-分类“;10、20、30“;核心数据的正确顺序

iPhone-分类“;10、20、30“;核心数据的正确顺序,iphone,core-data,Iphone,Core Data,我在一个实体上有一个字符串字段。每当我想要检索条目的排序列表,并且条目包含数字时,列表如下所示: car 1 car 10 car 11 car 2 car 21 etc. - (NSComparisonResult)numericCompare:(NSString *)aString { return [self compare:aString options:NSNumericSearch]; } 而不是 car 1 car 2 car 10 car 11 car 21 如何强

我在一个实体上有一个字符串字段。每当我想要检索条目的排序列表,并且条目包含数字时,列表如下所示:

car 1
car 10
car 11
car 2
car 21
etc.
- (NSComparisonResult)numericCompare:(NSString *)aString
{
    return [self compare:aString options:NSNumericSearch];
}
而不是

car 1
car 2
car 10
car 11
car 21
如何强制请求对字符串属性中的数字进行正确排序

我用的是:

NSSortDescriptor *sortByItem =  [NSSortDescriptor sortDescriptorWithKey:key ascending:YES selector:@selector(compare:)];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByItem];
[request setSortDescriptors:sortDescriptors];

谢谢。

编写自己的比较方法,如下所示:

car 1
car 10
car 11
car 2
car 21
etc.
- (NSComparisonResult)numericCompare:(NSString *)aString
{
    return [self compare:aString options:NSNumericSearch];
}

然后将此方法的选择器传递给排序描述符。

我找到了一种更简单的方法。只需使用localizedStandardCompare:而不是compare:即可对字符串上的数字进行正确排序。

我认为您必须编写自己的排序方法。我不知道这方面有什么默认的排序方法。它是正确地对数字进行排序,但它是根据它们的序数值而不是数字值进行排序。能否将值作为整数加载到NSMutableArray中,然后对其进行排序?能否在排序方法中将1更改为01?那就行了。比如@“%02i”?