我看到哪裏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);