2つのテーブルビューコントローラーにコアデータを実装しています。最初の表示銀行名、都市と州、2番目の表示銀行の詳細情報(zip、終了日など)。したがって、モデルには2つのエンティティがあります。1つ目は「BankInfo」、2つ目は「BankDetails」と呼ばれます。2つのエンティティは1対1の関係にあります。
最初のコントローラーから2番目のコントローラーにセグエするときに問題が発生します。2番目のテーブルビューコントローラでフェッチされたオブジェクトの数は常にゼロのようです。これは、FRCが何もフェッチしないことを意味します。何が問題なのですか?
最初のテーブルは正常に機能しています。そして、2番目のエンティティはデータで適切に満たされていると確信しています。そして、述語を削除しようとしました。その場合、FRCはエンティティ内のすべてのオブジェクトを返す必要があります。しかし、それでも何も返されません。
#import "SecondViewController.h"
#import "AppDelegate.h"
@interface SecondViewController () <NSFetchedResultsControllerDelegate>
@property (nonatomic,strong) NSFetchedResultsController *fetchedResultsController;
@end
@implementation SecondViewController
@synthesize bankInfo = _bankInfo;
@synthesize fetchedResultsController = _fetchedResultsController;
- (void)viewDidLoad
{
[super viewDidLoad];
self.fetchedResultsController.delegate = self;
NSError *error;
if (![self.fetchedResultsController performFetch:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
[self.tableView reloadData];
NSLog(@"Frist fetched object is %@",[[self.fetchedResultsController fetchedObjects] objectAtIndex:0]);
}
- (void)setBankInfo:(BankInfo *)bankInfo
{
_bankInfo = bankInfo;
}
- (NSFetchedResultsController *)fetchedResultsController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"BankDetails"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"info.state = %@",self.bankInfo.state];
[request setPredicate:predicate];
[request setSortDescriptors: [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"zip"
ascending:YES
]]];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = appDelegate.managedObjectContext;
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
return _fetchedResultsController;
}
// FRC delegate methods...
@end