Я пытаюсь создать приложение на основе примера проекта Apple TheElements, но использую Core Data для модели.В Core Data у меня есть 4 связанных таблицы БД.В пользовательском интерфейсе у меня есть несколько табличных представлений, каждый из которых показывает строки из другой таблицы БД.При щелчке строки в табличном представлении происходит детализация элементов в связанной таблице, показанной в другом табличном представлении.
Все работает, но приложение неожиданно зависает в случайное время с ошибкой: Программа получила сигнал: «EXC_BAD_ACCESS».Кстати, эта ошибка отображается только в консоли при отладке на устройстве.Ошибка не отображается при отладке на симуляторе.Этот снимок экрана показывает содержимое отладчика после сбоя.
Я понятия не имею, как расшифровать отладчик.Я вижу только то, что сбой происходит из-за функции main (), а также указан _PFManagedObjectReferenceQueue, что наводит на мысль, что я что-то не так делаю с Core Data.
Для реализации Core Data ядобавив следующее в заголовок моего делегата приложения:
@private
NSManagedObjectContext *managedObjectContext_;
NSManagedObjectModel *managedObjectModel_;
NSPersistentStoreCoordinator *persistentStoreCoordinator_;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator
и добавив методы Apple по умолчанию для них в файл реализации делегата приложения.
Затем в мой заголовок протокола источника данных, который я добавил:
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;`
и мои файлы заголовков источника данных выглядят следующим образом:
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "TableViewDataSourceProtocol.h"
@interface MatchesAllDataSource : NSObject <UITableViewDataSource,TableViewDataSource, NSFetchedResultsControllerDelegate>
{
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
}
@end
Когда щелкается ячейка таблицы, я передаю selectedObject следующим образом:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath
{
// deselect the new row using animation
[tableView deselectRowAtIndexPath:newIndexPath animated:YES];
// get the element that is represented by the selected row.
Match *selectedMatch = [dataSource objectForIndexPath:newIndexPath];
// create an AtomicElementViewController. This controller will display the full size tile for the element
MatchViewController *matchController = [[MatchViewController alloc] init];
// set the element for the controller
matchController.selectedMatch = selectedMatch;
// push the element view controller onto the navigation stack to display it
[[self navigationController] pushViewController:matchController animated:YES];
[matchController release];
}`
Кто-нибудь есть какие-либо идеи, что может быть причиной моего сбоя?Кто-нибудь, пожалуйста, укажет мне правильное направление, чтобы найти ответ?
Есть ли лучший способ реализовать Core Data с несколькими tableViews?Кто-нибудь подскажет мне хороший пример Core Data с несколькими tableViews?