2014-12-05 25 views
4

我想用神奇记录使用restkit。Restkit +魔法记录问题查找sql​​文件

所以我已经设定,按照以下网址: https://github.com/blakewatters/RKMagicalRecord

我的问题是,如果我试图创建一个使用魔法记录的记录,我总是得到下面的错误它试图在第一时间保存一切。如果我关闭了应用程序并重新启动它,那就没问题。

+ MagicalRecord(ErrorHandling中)defaultErrorHandler:错误:/var/mobile/Containers/Data/Application/1CECA7F7-510F-47F2-9F2D-4D0346C4E74F/Documents/WhateverModel.sqlite

这意味着它无法找到文件。所以我检查了这个文件夹,是的,即使我指示restkit来设置它,它也不存在。

任何想法为什么得到这个?下面

NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Model" ofType:@"momd"]]; 
NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy]; 
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; 
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Model.sqlite"]; 
NSError *error = nil; 
[managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error]; 
[managedObjectStore createManagedObjectContexts]; 

// Configure MagicalRecord to use RestKit's Core Data stack 
[NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:managedObjectStore.persistentStoreCoordinator]; 
[NSManagedObjectContext MR_setRootSavingContext:managedObjectStore.persistentStoreManagedObjectContext]; 
[NSManagedObjectContext MR_setDefaultContext:managedObjectStore.mainQueueManagedObjectContext]; 

RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:ROOT_URL]]; 
objectManager.managedObjectStore = managedObjectStore; 

创建并保存以下对象

设置代码:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { 
    WhateverObject *obj = [WhateverObject createInContext:localContext]; 
}completion:^(BOOL successful, NSError *error) { 

    if(successful){ 

    }else{ 

    } 
}]; 
+1

你怎么指导RestKit设置它? – 2014-12-05 10:07:33

+0

我在https://github.com/blakewatters/RKMagicalRecord中关注了项目 – user281300 2014-12-05 10:20:34

+0

在问题中显示代码,包括安装和保存,并显示完整的错误消息和堆栈跟踪。 – Wain 2014-12-05 10:39:05

回答

0

我删除神奇记录并使用以下设置它:

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:ROOT_URL]]; 

NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel]; 
manager.managedObjectStore = managedObjectStore; 
/** 
Complete Core Data stack initialization 
*/ 
[managedObjectStore createPersistentStoreCoordinator]; 

NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"WhateverModel.sqlite"]; 

NSError *error; 

NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:@{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES} error:&error]; 

NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error); 

// Create the managed object contexts 
[managedObjectStore createManagedObjectContexts]; 

// Configure a managed object cache to ensure we do not create duplicate objects 
managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext];