所以我有一种经典的情况,我希望按月/年分组tableView
。我有一个名为conference
的{{1}}对象的成员,我将其用于将不同的beginDateSearchString
放入存储桶中;我的问题出现在下一部分,我尝试并且未能使用conference
按NSSortDescriptor
(即日期)对每个存储桶进行排序。
我收到与beginDate
无法接收排序描述符类型选择器相关的错误。
这是令人厌恶的代码:
unsorted
答案 0 :(得分:-1)
除了排序之外,您可能希望过滤数组。请参阅NSPredicate和NSArray方法-filteredArrayUsingPredicate:然后创建由过滤器创建的eventArrays的eventsByDateArray。然后在表视图委托中创建单元格,如果一切都正确排序,第一部分将表示eventArray中事件的日期,它是eventsByDateArray的第一个对象,表格行将由eventArray中的事件组成。等等每个日期。
<强>加强>
您的快速枚举不正确。您可以通过字典的键来枚举。所以在你的代码中,unsorted等于枚举的每个键。这对每个人都是一个很好的教训。你输入一个变量并不重要。当Objective-C编译时,它会将它们全部转换为id。所以NSMutableArray *unsorted
不是NSMutableArray,除非它被分配给NSMutableArray。如果将未分类分配给NSString,它将是NSString。字典的快速枚举器使用密钥工作。因此,在这种情况下,unsorted将成为NSString。
而不是:
for (NSMutableArray *unsorted in dictionary) {
[unsorted sortUsingDescriptors:sortDescriptors];
}
你应该有这个:
for (id key in dictionary) {
NSMutableArray *unsorted = [dictionary objectForKey:key];
[unsorted sortUsingDescriptors:sortDescriptors];
}