Ios NSSortdescriptor未混合列表

Ios NSSortdescriptor未混合列表,ios,xcode,nsarray,nssortdescriptor,Ios,Xcode,Nsarray,Nssortdescriptor,我有一个数组,它应该按名称排序,但只有一半被排序。我有一个条目列表,可以分为两部分,第一部分来自字典,只有属性“name”,第二部分来自核心数据数据库,还有属性“addedbyser”。这两个列表都在tempArray中,并被添加到_resultsarray中,然后直接指向cellForRowAtIndexPath。但在此之前,我尝试按名称对结果数组进行排序。现在问题出现了:首先显示没有addedByUser属性的列表(按名称排序),然后显示另一个列表(带addedByUser属性),也按名称排

我有一个数组,它应该按名称排序,但只有一半被排序。我有一个条目列表,可以分为两部分,第一部分来自字典,只有属性“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];
}];