NSSortdescriptor没有混合列表

时间:2013-01-13 17:17:54

标签: ios xcode nsarray nssortdescriptor

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

[_resultsarray addObjectsFromArray:tempArray];

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

我做错了什么?谢谢!

更新:我很抱歉,我忘了写tempArray和_resultsarray都是可变阵列。

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

更新3:我发现了:

NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];

2 个答案:

答案 0 :(得分:0)

试试这个:

NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
_resultsarray = [tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort2]];

答案 1 :(得分:0)

您应该写一个NSComparoator,如:

_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];
}];
相关问题