首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSSortdescriptor不混合列表

NSSortdescriptor不混合列表
EN

Stack Overflow用户
提问于 2013-01-14 01:17:54
回答 2查看 194关注 0票数 0

我有一个数组,它应该按名称排序,但只有一半排序。我有一个条目列表,可以分为两部分,第一部分来自字典,只有属性"name",第二部分来自核心数据数据库,也有属性"addedByUser“。这两个列表都在tempArray中,并被添加到_resultsarray中,然后直接指向cellForRowAtIndexPath。但在此之前,我尝试按名称对_resultsarray进行排序。现在问题出现了:首先出现没有addedByUser属性的列表(按名称排序),然后出现另一个列表(具有addedByUser属性“),也按名称排序。

代码语言:javascript
运行
复制
[_resultsarray addObjectsFromArray:tempArray];

// Sort the list
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
[_resultsarray sortUsingDescriptors:[NSArray arrayWithObject:sort2]];

我做错了什么?谢谢!

更新:非常抱歉,我忘了写tempArray和_resultsarray都是可变数组。

更新2:如果名称以大写或小写字符开头,似乎会有所不同。我更新的问题是,有没有一种方法可以对NSMutableArray进行排序,而不管单词是以大写字符开头还是以小写字符开头?

更新3:我发现了:

代码语言:javascript
运行
复制
NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-14 01:23:18

您应该编写如下所示的NSComparoator

代码语言:javascript
运行
复制
_resultsarray = [tempArray sortedArrayUsingComparator:^(id firstObject, id secondObject) {
    NSString *name1 = ... ; // firstObject.name or firstObject.addedByUser
    NSString *name2 = ... ; // secondObject.name or secondObject.addedByUser
    return [name1 compare:name2];
}];
票数 0
EN

Stack Overflow用户

发布于 2013-01-14 01:21:04

试试这个:

代码语言:javascript
运行
复制
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
_resultsarray = [tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort2]];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14306018

复制
相关文章

相似问题

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