2011-08-19 59 views
0

在我有以下代码...为caseInsensitiveCompare无法识别的选择:与多于一个的对象阵列

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

tempArray是NSDates(事件的日期)的一个的NSMutableArray。如果数组的Xcode抛出一个无法识别的选择例外在一个以上的项目...

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

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

其实我已经有了这段代码现在运行了一段时间,直到今天都没有发现任何问题。也许我在今天之前从未在阵列中出现过1次以上的日期,但是我发现这很难相信,因为我现在已经测试了这个应用很多个月,并且肯定会在测试期间的某个时间点进入多个事件。

这样做的正确方法是什么?任何帮助将不胜感激。

约翰

+1

这个家伙会给你任何你不知道的提示吗? http://stackoverflow.com/questions/1132806/sort-nsarray-of-date-strings-or-objects –

+0

我在发布之前已经阅读过该帖子。那时我开始感到困惑。 – user278859

回答

2

如果你在你的阵列NSDates,你不应该使用caseInsensitiveCompare选择,因为NSDate的不回应。相反,应使用compare选择器:

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

我以为我在发布我的问题之前已经尝试过了,但现在它已经可以工作了。我尝试了如此多的组合,但没有告诉我在尝试使用compare时做了什么。谢谢,我真的很感谢你的快速回应。 – user278859