Core Data
でサポートされているUITableView
があります。fetchedObjectsはperformFetchの後はnilですが、tableViewにはデータがあります
私は今、表が空になったとき、私はrightBarButtonItem
を無効にすることを機能を実装しています:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear: animated];
self.navigationItem.rightBarButtonItem.enabled = self.fetchedResultsController.fetchedObjects ? YES : NO;
}
しかし、表にはアイテム、self.fetchedResultsController.fetchedObjects
返すnilを持っているので、ボタンは常に無効になっている場合でも。
performFetch
をviewDidLoad
と呼びます。
私はのviewDidLoad内でこのコードを試してみましたが、同じことが起こります。
self.fetchedResultsController.fetchedObjects
は、テーブルにデータが入力されていても何も表示されません。
EDITは
アイテムは、テーブルを表示する前に子コンテキストに即座に生成された多くのコードを追加しました。同じコンテキストがfetchRequest
に使用されています。テーブルは子コンテキスト内の項目が移入されますので、
項目は、コンテキストに間違いなくあります。しかし、viewWillAppear
を呼び出す場合、self.fetchedResultsController.fetchedObjects
はまだゼロです。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSError *error = nil;
if (![self.fetchedResultsController performFetch: &error])
{
NSLog(@"Failed to perform fetch: %@", error);
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
});
私はVCを表示する前にコンテキストを保存しています:
これは私が(viewDidLoad
で)performFetch
を呼び出す方法です。
のようなあなたのdispatchBlockで
self.fetchedResultsController.fetchedObjects
を呼び出してフェッチとnsmanagedObjectContext構成用のコードを追加してくださいしようとしています。 –