caseInsensitiveCompare的无法识别的选择器:在数组中有多个对象

时间:2011-08-19 20:44:12

标签: iphone xcode sorting nsarray nsdate

我有以下代码......

[sortedTripDatesList removeAllObjects];     
[sortedTripDatesList addObjectsFromArray:[tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]];

tempArray是NSDates的NSMutableArray(事件日期)。如果数组中有多个项,则xCode会抛出一个无法识别的选择器异常...

  

' - [__ NSDate caseInsensitiveCompare:]:无法识别的选择器发送到实例0x4f66dd0'

我认为这是因为数组中的对象是NSDates。在阅读文档和多个谷歌搜索后,我对如何对一组日期进行排序感到十分困惑。

实际上我已经让这段代码运行了一段时间,直到今天才发现问题。也许我在今天之前从未在阵列中有超过1个日期,但我发现这很难相信,因为我现在已经测试了这个应用程序好几个月,并且肯定会在测试期间的某个时刻进入多个事件。

这样做的正确方法是什么?任何帮助都值得赞赏。

约翰

1 个答案:

答案 0 :(得分:2)

如果您的数组中有NSDate,则不应使用caseInsensitiveCompare选择器,因为NSDate不响应它。相反,应使用compare选择器:

[sortedTripDatesList removeAllObjects];     
[sortedTripDatesList addObjectsFromArray:[tempArray sortedArrayUsingSelector:@selector(compare:)]];