2016-06-22 36 views
0

我看到哪裏NSFetchRequest已setReturnsObjectsAsFaults:NO,我見過valueForKey:使用,但我似乎無法讓它與MR_fetchAllGroupedBy一起工作。MR_fetchAllGrouped返回錯誤,我不知道如何提取數據

我把它用:

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,這樣我就可以」 t使用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); 

他們打印出空爲好。

UPDATE: 好吧,我改爲使用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); 

回答

0

發現,以防萬一有人解決方案否則會遇到同樣的問題: 1.將NSFetchedResultsControllerDelegate添加到標頭 2.在MR_fetchController調用中將自身添加到委託中。 3.將 - (void)controllerDidChangeContent:(NSFetchedResultsController *)控制器方法添加到.m 注意:controllerDidChangeContent:方法爲空,但似乎觸發了delegate:self工作。

相關問題