我有以下代码......
[sortedTripDatesList removeAllObjects];
[sortedTripDatesList addObjectsFromArray:[tempArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]];
tempArray是NSDates的NSMutableArray(事件日期)。如果数组中有多个项,则xCode会抛出一个无法识别的选择器异常...
' - [__ NSDate caseInsensitiveCompare:]:无法识别的选择器发送到实例0x4f66dd0'
我认为这是因为数组中的对象是NSDates。在阅读文档和多个谷歌搜索后,我对如何对一组日期进行排序感到十分困惑。
实际上我已经让这段代码运行了一段时间,直到今天才发现问题。也许我在今天之前从未在阵列中有超过1个日期,但我发现这很难相信,因为我现在已经测试了这个应用程序好几个月,并且肯定会在测试期间的某个时刻进入多个事件。
这样做的正确方法是什么?任何帮助都值得赞赏。
约翰
答案 0 :(得分:2)
如果您的数组中有NSDate,则不应使用caseInsensitiveCompare
选择器,因为NSDate不响应它。相反,应使用compare
选择器:
[sortedTripDatesList removeAllObjects];
[sortedTripDatesList addObjectsFromArray:[tempArray sortedArrayUsingSelector:@selector(compare:)]];