setPersistentStoreCoordinator核心数据坏访问

时间:2016-02-26 02:47:30

标签: ios objective-c core-data

我的代码在IOS 9之前有效。在我编译了一些其他更改之后,代码现在代码中的行死了一个BAD ACCESS消息。我不能理解为什么这个曾经工作,现在它没有。

[_ managedObjectContext setPersistentStoreCoordinator:coordinator];<<<这条线路崩溃 - 糟糕的访问

int main(int argc, char argv[])
{ 
     printf("%d", argc);
     return 0;
}

1 个答案:

答案 0 :(得分:0)

我用Willeke的暗示改写了上面的内容。我查了一下他的暗示并想出了一个更好的方法来做到这一点。这是现在有效的代码!

- (void)setmanagedObjectContext
{

    if (_managedObjectContext != nil) {
        return ;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"wrl.sqlite"];

    _managedObjectContext =
    [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

    self.managedObjectContext.persistentStoreCoordinator =
    [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];

    NSError* error;

    [self.managedObjectContext.persistentStoreCoordinator
     addPersistentStoreWithType:NSSQLiteStoreType
     configuration:nil
     URL:storeURL
     options:nil
     error:&error];
    if (error) {
        NSLog(@"error: %@", error);
    }
    self.managedObjectContext.undoManager = [[NSUndoManager alloc] init];
}




// Returns the managed object model for the application.
// If the model doesn't already exist, it is created from the application's model.
- (NSManagedObjectModel *)managedObjectModel
{
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"wrh" withExtension:@"momd"];

    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

    return _managedObjectModel;
}