Objective c 将NSMutableArray排序两次
我对一些Objective c 将NSMutableArray排序两次,objective-c,Objective C,我对一些NSMutableArray进行了排序,这些数组中有许多字段的字典。 我最感兴趣的两个字段是日期和一些计数整数 我已使用日期对数组进行排序: NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES]; sortedWithDates=[sortedWithDates sortedArrayUsingDescriptors:[NSArray
NSMutableArray
进行了排序,这些数组中有许多字段的字典。
我最感兴趣的两个字段是日期和一些计数整数
我已使用日期对数组进行排序:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES];
sortedWithDates=[sortedWithDates sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
现在,我只想获取数组中的对象-今天,并根据这个计数整数(最高的第一个)对它们再次排序
对于相同的NSSortDescriptor
类,有没有一种简单的方法可以做到这一点
谢谢。您可以随时使用相同的描述符。当然,您创建的描述符将始终按“dateCreated”升序排序,但它可以用于对任意数量的数组进行排序
您可以使用现代语法@[descriptor]代替[NSArray arrayWithObjects:descriptor,nil]@[object…]创建一个NSArray,其中包含方括号之间的对象 您可以随时使用相同的描述符。当然,您创建的描述符将始终按“dateCreated”升序排序,但它可以用于对任意数量的数组进行排序
您可以使用现代语法@[descriptor]代替[NSArray arrayWithObjects:descriptor,nil]@[object…]创建一个NSArray,其中包含方括号之间的对象 您可以随时使用相同的描述符。当然,您创建的描述符将始终按“dateCreated”升序排序,但它可以用于对任意数量的数组进行排序
您可以使用现代语法@[descriptor]代替[NSArray arrayWithObjects:descriptor,nil]@[object…]创建一个NSArray,其中包含方括号之间的对象 您可以随时使用相同的描述符。当然,您创建的描述符将始终按“dateCreated”升序排序,但它可以用于对任意数量的数组进行排序 您可以使用现代语法@[descriptor]代替[NSArray arrayWithObjects:descriptor,nil]@[object…]创建一个NSArray,其中包含方括号之间的对象 有没有一种简单的方法可以使用相同的NSSortDescriptor类来实现这一点 是的,有一个非常简单的方法。您可以使用描述符将多个排序描述符传递给
-sortedarray:
。根据第一个描述符相等的项目将根据第二个(或第三个等)进行排序
从文档中:
第一个描述符指定要在中使用的主键路径
对接收数组的内容进行排序。任何后续描述符都是
用于进一步优化具有重复值的对象的排序
因此,您的代码可以如下所示:
NSSortDescriptor *date = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES];
NSSortDescriptor *count = [[NSSortDescriptor alloc] initWithKey:@"count" ascending:YES];
sortedWithDates=[sortedWithDates sortedArrayUsingDescriptors:@[date, count]];
注意:我对描述符数组使用了较新的对象文字语法。这只是风格的问题——您的+arrayWithObjects:
调用也很好
有没有一种简单的方法可以使用相同的NSSortDescriptor类来实现这一点
是的,有一个非常简单的方法。您可以使用描述符将多个排序描述符传递给-sortedarray:
。根据第一个描述符相等的项目将根据第二个(或第三个等)进行排序
从文档中:
第一个描述符指定要在中使用的主键路径
对接收数组的内容进行排序。任何后续描述符都是
用于进一步优化具有重复值的对象的排序
因此,您的代码可以如下所示:
NSSortDescriptor *date = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES];
NSSortDescriptor *count = [[NSSortDescriptor alloc] initWithKey:@"count" ascending:YES];
sortedWithDates=[sortedWithDates sortedArrayUsingDescriptors:@[date, count]];
注意:我对描述符数组使用了较新的对象文字语法。这只是风格的问题——您的+arrayWithObjects:
调用也很好
有没有一种简单的方法可以使用相同的NSSortDescriptor类来实现这一点
是的,有一个非常简单的方法。您可以使用描述符将多个排序描述符传递给-sortedarray:
。根据第一个描述符相等的项目将根据第二个(或第三个等)进行排序
从文档中:
第一个描述符指定要在中使用的主键路径
对接收数组的内容进行排序。任何后续描述符都是
用于进一步优化具有重复值的对象的排序
因此,您的代码可以如下所示:
NSSortDescriptor *date = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES];
NSSortDescriptor *count = [[NSSortDescriptor alloc] initWithKey:@"count" ascending:YES];
sortedWithDates=[sortedWithDates sortedArrayUsingDescriptors:@[date, count]];
注意:我对描述符数组使用了较新的对象文字语法。这只是风格的问题——您的+arrayWithObjects:
调用也很好
有没有一种简单的方法可以使用相同的NSSortDescriptor类来实现这一点
是的,有一个非常简单的方法。您可以使用描述符将多个排序描述符传递给-sortedarray:
。根据第一个描述符相等的项目将根据第二个(或第三个等)进行排序
从文档中:
第一个描述符指定要在中使用的主键路径
对接收数组的内容进行排序。任何后续描述符都是
用于进一步优化具有重复值的对象的排序
因此,您的代码可以如下所示:
NSSortDescriptor *date = [[NSSortDescriptor alloc] initWithKey:@"dateCreated" ascending:YES];
NSSortDescriptor *count = [[NSSortDescriptor alloc] initWithKey:@"count" ascending:YES];
sortedWithDates=[sortedWithDates sortedArrayUsingDescriptors:@[date, count]];
注意:我对描述符数组使用了较新的对象文字语法。这只是风格的问题——您的
+arrayWithObjects:
调用也很好。它的可能副本肯定不是副本。仔细阅读问题和你给我的链接。我已经知道如何对数组排序了。我只想用sortDescriptor对它的一部分进行排序。它的可能副本肯定不是副本。仔细阅读问题和你给我的链接。我已经知道如何对数组排序了。我只想用sortDescriptor对它的一部分进行排序。它的可能副本肯定不是副本。仔细阅读问题和你给我的链接。我已经知道如何对数组排序了。我只想用sortDescriptor对它的一部分进行排序。它的可能副本肯定不是副本。仔细阅读问题和你给我的链接。我已经知道怎么做了