如何按日期对EKEvent数组进行排序?

英飞凌实验室

我有一个数组,用于存储通过谓词获取的事件;我想按日期对它们进行排序。我读到我必须“在数组上调用sortedArrayUsingSelector :,为compareStartDateWithEvent:方法提供选择器”,但我不知道如何确切地使用它。有人可以给我一个例子吗?

这是我的数组:NSArray *events = [store eventsMatchingPredicate:predicate]谢谢!

i_am_jorf

拥有阵列后,请考虑:

NSArray *sortedArray = [events sortedArrayUsingComparator:^NSComparisonResult(EKEvent *event1, EKEvent *event2) {
    return [event1.startDate compare:event2.startDate];
}];

这将使用内置的NSDate-比较功能按开始日期对事件进行排序

- sortedArrayUsingComparator方法采用一个NSComparator块,该块定义为:

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);

您基本上可以将其视为带有两个参数的块(lambda函数),然后返回一个NSComparisonResult成员,成员解释两个给定对象的顺序。对象的类型取决于您要放入数组的内容,在本例中为EKEvents。如何选择它们取决于您;阅读NSComparator以获得更多信息和规则。NSArray将多次调用您的块,每次显示两个项目,直到对数组进行排序为止。

现在,幸运的是,您EKEvent将公开一个知道如何与进行比较的选择器EKEvents您可以使用NSArray另一种方法sortedArrayUsingSelector:,并告诉它使用EKEvent公开的比较选择器:

NSArray *sortedArray = [events sortedArrayUsingSelector:@selector(compareStartDateWithEvent:)];

现在,NSArray它将在- compareStartDateWithEvent:每次要比较两个项目时进行调用如果那是您想要的订购,则可以使用它。否则,请使用上面的比较器方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按日期对多维数组进行排序?

如何按日期对Javascript对象数组进行排序?

如何按日期对对象数组进行排序?

如何按日期字段对json数组进行排序

如何在JavaScript中按日期对数组进行排序?

如何按创建日期对filemanager数组进行排序

如何按日期对对象的嵌套数组进行排序

按日期对多维数组进行排序

PHP:按日期对多维数组进行排序

按日期对PHP数组表进行排序

如何按日期对 DataTables 行进行排序?

如何按日期对ant表列进行排序?

如何按日期对 $.each() 函数进行排序

如何按日期对记录进行排序?

按单键按日期值对对象数组进行排序

按日期对带有日期字段的对象数组进行排序

如何按“包含”对数组进行排序?

如何按包含日期的元素从最新到最旧对 3 维数组进行排序

如果JS中存在值,如何根据日期按降序对数组进行排序?

如何按日期对字符串形式的对象数组进行排序?

如何按属性值(日期)对包含NSManagedObject子类实例的swift数组进行排序

如何在Python中按日期时间对对象数组进行排序?

如何使用Vue.js 2按日期对数组进行排序

如何按两个字段对数组进行排序(包括日期)

如何使用数组中的 moment.js 按降序对日期进行排序

如何按日期时间对具有唯一元素的数组进行排序(Python)

如何按日期对查询进行排序和分组,并在Laravel中将其分组为数组

按日期对php中的3个多维数组进行排序

无法在PHP中按日期对多维数组进行排序