有了这个
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];
}
答案 0 :(得分:4)
在将“课程”转换为数字之前,您必须修剪字符串,以便排序描述符正常工作。否则,排序描述符只能看到字符串值而不是数字。这是删除空格和换行符的方法:
NSString *stringValue = [parsedValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
对[stringValue intValue]的调用将获得字符串
的整数值int value = [stringValue intValue];
在调用此属性的排序描述符之前,将此值保存到数组中。
告诉我它是否有效。
答案 1 :(得分:1)
它恰到好处地排序了。毕竟,每个条目都是一个字符串,并且在字符串“10”之后是“9”之后......
现在,如果您想按照预期的方式对其进行排序,您需要保存NSNuumber对象并对其进行排序,或者将字符串保持为标准化形式,如“08”,“09”,“10”和然后可能会稍后从字符串中删除前导0。
答案 2 :(得分:0)
[NSSortDescriptor sortDescriptorWithKey:@"self"
ascending:YES
comparator:^(id obj1, id obj2){
return [(NSString*)obj1 compare:(NSString*)obj2
options:NSNumericSearch];
}];
从0到1000000 .....的范围内对范围进行排序。