Ios NSSortdescriptor未混合列表
我有一个数组,它应该按名称排序,但只有一半被排序。我有一个条目列表,可以分为两部分,第一部分来自字典,只有属性“name”,第二部分来自核心数据数据库,还有属性“addedbyser”。这两个列表都在tempArray中,并被添加到_resultsarray中,然后直接指向cellForRowAtIndexPath。但在此之前,我尝试按名称对结果数组进行排序。现在问题出现了:首先显示没有addedByUser属性的列表(按名称排序),然后显示另一个列表(带addedByUser属性),也按名称排序。我无法将它们混合Ios NSSortdescriptor未混合列表,ios,xcode,nsarray,nssortdescriptor,Ios,Xcode,Nsarray,Nssortdescriptor,我有一个数组,它应该按名称排序,但只有一半被排序。我有一个条目列表,可以分为两部分,第一部分来自字典,只有属性“name”,第二部分来自核心数据数据库,还有属性“addedbyser”。这两个列表都在tempArray中,并被添加到_resultsarray中,然后直接指向cellForRowAtIndexPath。但在此之前,我尝试按名称对结果数组进行排序。现在问题出现了:首先显示没有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:)];
试试这个:
NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
_resultsarray = [tempArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort2]];
您应该编写一个
nscomparator
如下:
_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];
}];