objective-c – 通过NSDate属性对自定义对象的NSArray进行排序

objective-c – 通过NSDate属性对自定义对象的NSArray进行排序,第1张

概述我正在尝试排序填充有自定义对象的NSArray.每个对象都有一个类型为NSDate的属性startDateTime. 以下代码导致数组,sortedEventArray,填充但未排序.我这样做是完全错误的,还是我只是想念一些小事? NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"startDa 我正在尝试排序填充有自定义对象的NSArray.每个对象都有一个类型为NSDate的属性startDateTime.

以下代码导致数组,sortedEventArray,填充但未排序.我这样做是完全错误的,还是我只是想念一些小事?

NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"startDateTime"                                                                  ascending:YES];NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];NSArray *sortedEventArray = [nodeEventArray sortedArrayUsingDescriptors:sortDescriptors];
解决方法 确定节点事件的startDateTime实例变量是否为非零?

如果您还没有,您可以添加一个(自定义)描述方法到您的节点事件对象,执行如下 *** 作:

- (Nsstring *)description {   return [Nsstring stringWithFormat:@"%@ - %@",[super description],startDateTime]];}

然后在您的排序代码中记录数组前后:

NSLog(@"nodeEventArray == %@",nodeEventArray);NSSortDescriptor *dateDescriptor = [NSSortDescriptor                                     sortDescriptorWithKey:@"startDateTime"                                                  ascending:YES];NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];NSArray *sortedEventArray = [nodeEventArray         sortedArrayUsingDescriptors:sortDescriptors];NSLog(@"sortedEventArray == %@",sortedEventArray);

如果startDateTime的全部为零,那么前后数组将有相同的顺序(因为排序 *** 作将等同于将所有的-compare:消息发送到nil,基本上什么都不做).

总结

以上是内存溢出为你收集整理的objective-c – 通过NSDate属性对自定义对象的NSArray进行排序全部内容,希望文章能够帮你解决objective-c – 通过NSDate属性对自定义对象的NSArray进行排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1029342.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存