【问题标题】:MR_fetchAllGroupedBy returning faults, I don't know how to extract the dataMR_fetchAllGroupedBy返回故障,不知道怎么提取数据
【发布时间】:2016-06-22 05:18:34
【问题描述】:

我看到 NSFetchRequest 在哪里 setReturnsObjectsAsFaults:NO,并且我已经看到 valueForKey: 使用过,但我似乎无法让它与 MR_fetchAllGroupedBy 一起使用。

我称之为:

self.fetchedRC = [FeedSource MR_fetchAllGroupedBy:@"category" withPredicate:predicate sortedBy:@"category" ascending:YES inContext:self.defaultContext];

配置单元有:

- (void)configureCell:(UITableViewCell*)cell atIndexPath:(NSIndexPath*)indexPath {
    FeedSource *tempSource = [self.fetchedRC objectAtIndexPath:indexPath];
    for (int j=0; j<self.tempHeaders.count; j++) {
        FeedSource *myFeedSource = [self.fetchedRC objectAtIndexPath:indexPath];
        if ([self.tempHeaders[j] isEqualToString:tempSource.header]) {
            headerInUse = YES;
            break;
        }
    }

MR_fetchAllGoupedBy 没有使用 fetchRequest 的选项(我看不到),所以我不能使用 setReturnsObjectsAsFaults:。

在configureCell 中,tempSource 为Null。据我了解,我必须触发对象来获取数据,因为我正在调用数组,所以不会调用对象来获取数据,并且数组无法获取数据。

那么,我需要直接从 self.fetchedRC 中提取数据吗?

我该怎么做?

我试过了:

MLog(@"value for key: %@", [[self.fetchedRC valueForKey:@"category"]allObjects]);

它崩溃了: 这个类不符合键类别的键值编码。

我也试过了:

FeedSource *myFeedSource = [self.fetchedRC objectAtIndexPath:indexPath];
NSString *myHeader = myFeedSource.header;
NSString *myNewHeader = [myFeedSource valueForKey:@"header"];
MLog(@"Header: %@",myNewHeader);
MLog(@"Header:%@",myHeader);

他们也打印出 Null。

更新: 好的,我将代码更改为使用 setReturnsObjectsAsFaults 仍然有错误:

NSManagedObjectContext *localContext = [NSManagedObjectContext MR_defaultContext];
NSFetchRequest *myFetchRequest = [FeedSource MR_requestAllSortedBy:@"category"
                                            ascending:YES
                                        withPredicate:predicate
                                            inContext:localContext];
[myFetchRequest setReturnsObjectsAsFaults:NO];
[myFetchRequest setFetchBatchSize:30];
NSFetchedResultsController *myFRC = [FeedSource MR_fetchController:myFetchRequest
                                                          delegate:nil
                                                     useFileCache:NO
                                                        groupedBy:@"category"
                                                        inContext:localContext];
[FeedSource MR_performFetch:myFRC];
self.fetchedRC = myFRC;

即使 valueForKey 也返回 null:

FeedSource *myFeedSource = [self.fetchedRC objectAtIndexPath:indexPath];
MLog(@"[self.fetchedRC objectAtIndexPath:indexPath] %@",[self.fetchedRC objectAtIndexPath:indexPath]);
NSString *myHeader = myFeedSource.header;
NSString *myNewHeader = [myFeedSource valueForKey:@"header"];
MLog(@"Header using valueForKey: %@",myNewHeader);

【问题讨论】:

    标签: core-data nsfetchedresultscontroller magicalrecord


    【解决方案1】:

    找到一个解决方案,以防其他人遇到同样的问题: 1.在头部添加NSFetchedResultsControllerDelegate 2. 在 MR_fetchController 调用中添加 self 来委托。 3. 添加 - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller 方法到 .m 注意:controllerDidChangeContent: 方法为空,但似乎触发了 delegate:self 工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 2016-08-07
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多