Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSSortDescriptor、核心数据和NSFetchedResultsController按日期和名称对UITableView进行排序_Ios_Core Data_Uitableview_Nsfetchedresultscontroller_Unrecognized Selector - Fatal编程技术网

Ios 使用NSSortDescriptor、核心数据和NSFetchedResultsController按日期和名称对UITableView进行排序

Ios 使用NSSortDescriptor、核心数据和NSFetchedResultsController按日期和名称对UITableView进行排序,ios,core-data,uitableview,nsfetchedresultscontroller,unrecognized-selector,Ios,Core Data,Uitableview,Nsfetchedresultscontroller,Unrecognized Selector,我有一个UITableViewController,当前正在按日期排序。我将核心数据与NSFetchedResultsController一起使用,我还想引入一种按名称进行的进一步排序 我的模型是: 交易实体 与日期实体的关系 人与实体的关系 我的fetchedResultsController代码如下: - (NSFetchedResultsController *)fetchedResultsController { NSManagedObjectContext *managedOb

我有一个UITableViewController,当前正在按日期排序。我将
核心数据
NSFetchedResultsController
一起使用,我还想引入一种按名称进行的进一步排序

我的模型是:

交易实体 与日期实体的关系 人与实体的关系

我的
fetchedResultsController
代码如下:

- (NSFetchedResultsController *)fetchedResultsController
{
    NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
    if (_fetchedResultsController != nil)
    {
        return _fetchedResultsController;
    }
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:managedObjectContext];
    fetchRequest.entity = entity;
    if ([self.timelineSearchBar.text length] > 0) {
        NSPredicate *predName = [NSPredicate predicateWithFormat:@"whoBy.name CONTAINS[c] %@", self.timelineSearchBar.text];
        NSPredicate *predOccasion = [NSPredicate predicateWithFormat:@"occasion.title CONTAINS[c] %@", self.timelineSearchBar.text];
        NSPredicate *predSubOccasion = [NSPredicate predicateWithFormat:@"subevent.title CONTAINS[c] %@", self.timelineSearchBar.text];
        NSPredicate *compPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predName, predOccasion, predSubOccasion]];

        [fetchRequest setPredicate:compPredicate];
    }
    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"dates.dateOfEvent" ascending:NO];


    fetchRequest.sortDescriptors = [NSArray arrayWithObject:sort];
    fetchRequest.fetchBatchSize = 20;
    NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"sectionDateFormatter" cacheName:nil];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;
    return _fetchedResultsController;
}
因此,
sortDescriptor
现在正在对日期进行排序。
部分标题
是从NSDate到NSString的转换

我尝试使用以下代码添加另一个
sortDescriptor

NSSortDescriptor *sortByName = [[NSSortDescriptor alloc] initWithKey:@"whoBy.name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];

fetchRequest.sortDescriptors = @[[NSArray arrayWithObjects:sort, sortByName, nil]];
应用程序因以下错误而崩溃:

-[__NSArrayI key]: unrecognized selector sent to instance 0x1702237c0
 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI key]: unrecognized selector sent to instance 0x1702237c0'
我想要实现的就是确保按日期排序的条目也按名称排序


任何指导都将不胜感激

您正在设置排序描述符的数组。修正这一行:

fetchRequest.sortDescriptors = @[[NSArray arrayWithObjects:sort, sortByName, nil]];
致:


非常感谢@thom_ek-这真是太完美了-很好的捕获,谢谢你的帮助-很抱歉问了这个基本问题!
fetchRequest.sortDescriptors = @[sort, sortByName];