首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSSortDescriptor根本不会计算数字

NSSortDescriptor根本不会计算数字
EN

Stack Overflow用户
提问于 2010-10-16 22:34:50
回答 3查看 1.2K关注 0票数 2

有了这个

代码语言:javascript
复制
    NSSortDescriptor *lessonDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lesson" ascending:YES];
[resultArray sortUsingDescriptors:[NSArray arrayWithObject:lessonDescriptor]];

它将"lesson"-objects排序为

代码语言:javascript
复制
(
    {
    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;
}

)

如你所见,它不能正确计数..有人能帮帮忙吗?

非常感谢

编辑:

不知道如何实现值thing =)

代码语言:javascript
复制
else if ([currentElement isEqualToString:@"lesson"]) 
{ 

    NSString *trimmedString = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSLog(@"trimmed: %@",trimmedString);
    int value = [trimmedString intValue];   ??
    [currentSummary appendString:value];  ??

    [currentSummary appendString:trimmedString]; 
} 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-16 22:38:46

为了让排序描述符正常工作,您必须在将“lesson”转换为数字之前修剪字符串。否则,排序描述符只能看到字符串值,而看不到数字。下面是删除空格和换行符的方法:

代码语言:javascript
复制
NSString *stringValue = [parsedValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

调用stringValue intValue将获得字符串的整数值

代码语言:javascript
复制
int value = [stringValue intValue];

在调用此属性的排序描述符之前,将此值保存到数组中。

告诉我它能不能用。

票数 4
EN

Stack Overflow用户

发布于 2010-10-17 00:15:51

它对它进行了恰到好处的排序。毕竟,每个条目都是一个字符串,而在字符串中,"10“毕竟在"9”之前...

现在,如果你想以你期望的方式对它进行排序,你要么需要持有NSNuumber对象并进行排序,要么让字符串以"08","09","10“这样的规范化形式持有,然后可能在以后从字符串中去掉前导0。

票数 1
EN

Stack Overflow用户

发布于 2013-01-08 13:42:07

代码语言:javascript
复制
[NSSortDescriptor sortDescriptorWithKey:@"self"
                              ascending:YES
                             comparator:^(id obj1, id obj2){
    return [(NSString*)obj1 compare:(NSString*)obj2
                            options:NSNumericSearch];
 }];

排序范围为0- 1000000.....往前走。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3949294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档