【问题标题】:Core Data - sectionNameKeyPath with a One to Many Relationship核心数据 - 具有一对多关系的 sectionNameKeyPath
【发布时间】:2015-08-26 06:41:12
【问题描述】:

我在使用关系创建 tableView 部分时遇到困难。

我有两个具有关系 List Item 的实体。

我希望 List 成为部分,Item 成为行。我将sectionNameKeyPath 设置为键路径@"itemList"。 这就是我的 fetchedResultsController 其余部分的样子

- (NSFetchedResultsController *)fetchedResultsController {

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

    // Fetch Request
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
    [fetchRequest setFetchBatchSize:20];

    // Sort Descriptors
    NSSortDescriptor *itemSort = [[NSSortDescriptor alloc] initWithKey:@"displayOrderItem" ascending:YES];
    NSSortDescriptor *sectionSort = [[NSSortDescriptor alloc] initWithKey:@"displayOrderList" ascending:YES];
    NSArray *sortDescriptors = @[sectionSort, itemSort];
    [fetchRequest setSortDescriptors:sortDescriptors];

    // Fetched Results Controller
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"itemList" cacheName:nil];
    aFetchedResultsController.delegate = self;
    self.fetchedResultsController = aFetchedResultsController;

    NSError *error;
    if (![self.fetchedResultsController performFetch:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }

    return _fetchedResultsController;
}

结果是 fetchedResultsController 根本没有填充 tableView。当我尝试不带部分时,使用sectionNameKeyPath:nilsetSortDescriptor:itemSort,它会很好地填充 tableView。此外,numberOfSectionsInTableViewcontroller didChangeSection 已正确设置。

我不确定我做错了什么。有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

    标签: ios objective-c core-data nsfetchedresultscontroller


    【解决方案1】:

    将部分名称键路径更改为itemList.listName,因为 FRC 需要该部分的字符串名称,而不是“代表”该部分的托管对象。

    【讨论】:

    • 这就是我的结果。由于我想使用displayOrderList 对部分进行排序,因此我使用itemList.displayOrderList 作为sectionNameKeyPath,并使用itemList.displayOrderList 作为sortDescriptor。我在titleForHeaderInSection中将部分的标题更改为listName,它工作正常。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多