【问题标题】:Setting up FetchedResultsController with multiple entities使用多个实体设置 FetchedResultsController
【发布时间】:2014-06-11 11:55:19
【问题描述】:

我在Core Data 中有几个实体。一种称为EventCluster,用于保存和构造Event 对象。

我想要在我的UITableView 中做的所有事情都非常简单——我希望UITableViewSections 成为相应的EventCluster 对象,并且该部分的每一行都是一个Event 对象,它将按@987654328 排序@值。

现在我所做的就是:

- (NSFetchedResultsController *)fetchedResultsController {

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:_managedObjectContext];
    [fetchRequest setEntity:entity];

    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"eventID" ascending:NO];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

    [fetchRequest setFetchBatchSize:20];

    NSFetchedResultsController *theFetchedResultsController =
    [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                        managedObjectContext:_managedObjectContext
                                          sectionNameKeyPath:nil
                                                   cacheName:@"Root"];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;
}

有没有一种方便的方法可以在这里设置NSFetchedResultsController 以包含EventCluster 结构?

【问题讨论】:

  • 尝试将 sectionNameKeyPath 设置为 @"EventCluster"
  • @Koen,不,那行不通。与预期一样崩溃:the entity Event is not key value coding-compliant for the key "EventCluster"
  • 他们在你的模型中没有关系?
  • 确实如此,EventCluster 确实是 EventparentCluster 属性。问题是我还必须对 EventCluster 对象进行排序,然后对其中的 Event 对象进行排序。
  • 然后将sectionNameKeyPath设置为@"parentCluster"。

标签: cocoa-touch uitableview core-data nsfetchedresultscontroller


【解决方案1】:

您需要查询事件并使用 sectionNameKeyPath: 指向 EventCluster 上的自定义方法,该方法为每个 EventCluster 返回一个唯一的 NSString:

parentCluster:@"parentCluster.customMethod"

还有这个(我是用心写的,但你明白了)

@implementation EventCluster (CategoryName)

- (NSString *)customMethod
{
    return self.objectID.URIRepresentation.absoluteString;
}

@end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2012-04-09
    • 2022-01-23
    相关资源
    最近更新 更多