在类型的对象上找不到Restkit 2.0“managedObjectContext”

时间:2014-02-17 05:38:33

标签: ios core-data restkit restkit-0.20

请原谅可能的noob问题。我正在使用Restkit 2.0构建一个应用程序,并且在实现Core Data功能时遇到了问题。在this tutorial之后,我将以下代码添加到我的AppViewController中(所有其他视图控制器都扩展了此类)。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.navigationBar.shadowImage = [UIImage new];

    NSError *error = nil;
    NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Jumplytics" ofType:@"momd"]];
    // NOTE: Due to an iOS 5 bug, the managed object model returned is immutable.
    NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy];
    RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];

    // Initialize the Core Data stack
    [managedObjectStore createPersistentStoreCoordinator];

    NSPersistentStore __unused *persistentStore = [managedObjectStore addInMemoryPersistentStore:&error];
    NSAssert(persistentStore, @"Failed to add persistent store: %@", error);

    [managedObjectStore createManagedObjectContexts];

    // Set the default store shared instance
    [RKManagedObjectStore setDefaultStore:managedObjectStore];

    // Override point for customization after application launch.
    self.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext;
}

我收到错误:

property managedObjectContext not found on object of type 'AppViewController'

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可能不希望在超类中的viewDidLoad中使用此代码,因为这意味着它正在为每个子类运行。因此,每个VC都有自己的核心数据堆栈。您更希望所有控制器(可能在单一数据控制器中)使用单个Core Data堆栈。

您的错误:

  

在'AppViewController'类型的对象上找不到属性managedObjectContext

似乎与RestKit无关。这意味着当您没有名为self.managedObjectContext的属性时,您正在使用managedObjectContext。您只需添加属性即可引用它。