nssortDescriptor根本无法计数数字
-
08-10-2019 - |
题
有了这个
NSSortDescriptor *lessonDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lesson" ascending:YES];
[resultArray sortUsingDescriptors:[NSArray arrayWithObject:lessonDescriptor]];
它正在将“课程” - 对象分类为
(
{
lesson = 9;
subject = bg;
},
{
lesson = 8;
subject = bg;
},
{
lesson = 11;
subject = CAE;
},
{
lesson = 11;
subject = CAE;
},
{
lesson = 10;
subject = CAE;
},
{
lesson = 10;
subject = CAE;
},
{
lesson = 5;
subject = Gg;
},
{
lesson = 4;
subject = G;
},
{
lesson = 3;
subject = G;
},
{
lesson = 2;
subject = M;
},
{
lesson = 1;
subject = M;
}
)
如您所见,它不能正确计算。.有人可以提供帮助吗?
多谢
编辑:
不知道如何实现值=)
else if ([currentElement isEqualToString:@"lesson"])
{
NSString *trimmedString = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"trimmed: %@",trimmedString);
int value = [trimmedString intValue]; ??
[currentSummary appendString:value]; ??
[currentSummary appendString:trimmedString];
}
解决方案
在将“课程”转换为数字之前,您必须修剪字符串,以使排序描述符正常工作。否则,排序描述符仅会看到字符串值而不是数字。这就是您删除空格和新线字符的方式:
NSString *stringValue = [parsedValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
呼叫[StringValue intvalue]将获得字符串的整数值
int value = [stringValue intValue];
在调用此属性上的排序描述符之前,将此值保存到数组中。
告诉我它是否有效。
其他提示
它把它排序了。毕竟,每个条目都是字符串,在字符串中,“ 10”在“ 9”之前...毕竟...
现在,如果您想按照期望对其进行排序,则需要握住nsnuumber对象并对其进行排序,或者具有符合正常形式的字符串,例如“ 08”,“ 09”,“ 10”,然后可能修剪稍后从字符串中引导0。
[NSSortDescriptor sortDescriptorWithKey:@"self"
ascending:YES
comparator:^(id obj1, id obj2){
return [(NSString*)obj1 compare:(NSString*)obj2
options:NSNumericSearch];
}];
范围从0-1000000 .....
不隶属于 StackOverflow