Я новичок в Какао и пишу простое приложение, чтобы научиться работать с Core Data, но оно выходит из строя с EXC_BAD_ACCESS
.Перепробовал несколько вещей и пока не нашел решения.Как я уже сказал, я не очень опытен в Какао.
Я следовал обычным учебным курсам по основным данным.
Это моя модель:
Я добавил эти две сущности как NSArrayController
в моем Nib-файле и имею два NSTableView
с привязкой значения к объектам сущности.
И вот код:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSManagedObjectContext *context = [self managedObjectContext];
TaskList *list = [NSEntityDescription
insertNewObjectForEntityForName:@"TaskList"
inManagedObjectContext: context]; // EXC_BAD_ACCESS happens here
[list setTitle:@"Inbox"];
Task *task = [NSEntityDescription
insertNewObjectForEntityForName:@"Task"
inManagedObjectContext: context];
[task setKey:@"Remember the milk"];
[task setList:list];
NSError *error;
if (![context save:&error]) {
NSLog(@"Error: %@", [error localizedDescription]);
}
}
Вот и все!Это все моя программа.Я использую Xcode 4.2, разрабатываю приложение для Mac, и ARC включен.
ОБНОВЛЕНИЕ: jrturton попросил меня включить реализацию [self managedObjectContext]
.Я не писал этот код, но вот что я нашел в AppDelegate.h
:
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
И это из AppDelegate.m
:
@synthesize managedObjectContext = __managedObjectContext;
...
/**
Returns the managed object context for the application (which is already
bound to the persistent store coordinator for the application.)
*/
- (NSManagedObjectContext *)managedObjectContext {
if (__managedObjectContext) {
return __managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (!coordinator) {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setValue:@"Failed to initialize the store" forKey:NSLocalizedDescriptionKey];
[dict setValue:@"There was an error building up the data file." forKey:NSLocalizedFailureReasonErrorKey];
NSError *error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict];
[[NSApplication sharedApplication] presentError:error];
return nil;
}
__managedObjectContext = [[NSManagedObjectContext alloc] init];
[__managedObjectContext setPersistentStoreCoordinator:coordinator];
return __managedObjectContext;
}