有了这个

    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 .....

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top