NSSortDescriptor 不按字母顺序排序
NSSortDescriptor not sorting alphabetically
我有一本字典,我想根据 firstName
:
按字母顺序排序
{
id = 123;
user = {
firstName = "Test 15";
sex = Male;
};
},
{
id = 23;
user = {
firstName = "Test 12";
sex = Male;
};
}
我尝试了以下代码进行排序:
NSSortDescriptor *sorter = [[NSSortDescriptor alloc]
initWithKey:@"user.firstName"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];
[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]]
但是上面的代码好像不行。
知道哪里出了问题吗?
sortedArrayUsingDescriptors:创建一个将被排序的新数组 returns。您不会将该数组存储在任何地方。原件未受影响,您的代码将排序后的数组丢弃。
方法调用往往被命名,以便它们的名称表明它的作用。如果你想对一个数组进行排序(它需要是可变的,否则你不能对它进行排序),会有一些方法叫做 sortUsing... 类似 "sortedArrayUsing..." 显然 returns 一个新数组.您有一个数组,该方法为您提供了一个排序数组。
数组保持未排序状态,因为您没有将排序后的数组存储在任何地方。这里有一些选项
将排序后的数组保存到新数组
NSArary *sortedArray = [arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];
将排序后的数组保存到新的可变数组
NSMutableArary *sortedArray = [[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] mutableCopy];
或者可能是您要查找的内容:将未排序的数组替换为已排序的数组
arrayToBeSorted = [[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] mutableCopy];
我有一本字典,我想根据 firstName
:
{
id = 123;
user = {
firstName = "Test 15";
sex = Male;
};
},
{
id = 23;
user = {
firstName = "Test 12";
sex = Male;
};
}
我尝试了以下代码进行排序:
NSSortDescriptor *sorter = [[NSSortDescriptor alloc]
initWithKey:@"user.firstName"
ascending:YES
selector:@selector(localizedCaseInsensitiveCompare:)];
[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]]
但是上面的代码好像不行。
知道哪里出了问题吗?
sortedArrayUsingDescriptors:创建一个将被排序的新数组 returns。您不会将该数组存储在任何地方。原件未受影响,您的代码将排序后的数组丢弃。
方法调用往往被命名,以便它们的名称表明它的作用。如果你想对一个数组进行排序(它需要是可变的,否则你不能对它进行排序),会有一些方法叫做 sortUsing... 类似 "sortedArrayUsing..." 显然 returns 一个新数组.您有一个数组,该方法为您提供了一个排序数组。
数组保持未排序状态,因为您没有将排序后的数组存储在任何地方。这里有一些选项
将排序后的数组保存到新数组
NSArary *sortedArray = [arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];
将排序后的数组保存到新的可变数组
NSMutableArary *sortedArray = [[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] mutableCopy];
或者可能是您要查找的内容:将未排序的数组替换为已排序的数组
arrayToBeSorted = [[arrayToBeSorted sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]] mutableCopy];