Ios 对象不会保存到SQL Lite中,即使它说它已保存[RestKit ManagedObjectContext]
所以我有一个非常令人沮丧的问题。。。我正在使用Restkit从Django服务器获取对象,映射成功完成。那很好!现在,我正试图从SQLLite数据库中获取该对象,并更改该对象并将其保存回去。例如:Ios 对象不会保存到SQL Lite中,即使它说它已保存[RestKit ManagedObjectContext],ios,core-data,restkit,nsmanagedobjectcontext,Ios,Core Data,Restkit,Nsmanagedobjectcontext,所以我有一个非常令人沮丧的问题。。。我正在使用Restkit从Django服务器获取对象,映射成功完成。那很好!现在,我正试图从SQLLite数据库中获取该对象,并更改该对象并将其保存回去。例如: _managedObjectContext = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext; NSFetchRequest *fetchRequest = [NSFetchRequest fet
_managedObjectContext = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"User"];
fetchRequest.predicate = [NSPredicate predicateWithFormat: @"identifier == 3"];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"identifier" ascending:NO];
fetchRequest.sortDescriptors = @[descriptor];
NSError *error = nil;
NSFetchedResultsController *fetchedResultsController2 = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:_managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
BOOL fetchSuccessful = [fetchedResultsController2 performFetch:&error];
if (! fetchSuccessful) {
NSLog(@"%@", error.description);
}
PokaUser* user = [[fetchedResultsController2 fetchedObjects]objectAtIndex:0];
user.firstName = @"NewFirstName";
BOOL hasSaved = [user.managedObjectContext save:&error];
NSLog(@"INFO:{%s} CoreData has Saved: %@ (%d)\nerror:%@ | %@ | %@", __FUNCTION__, (hasSaved) ? @"YES" : @"NO", hasSaved, error, [error userInfo],[error localizedDescription]);
我得到以下日志:
CoreData已保存:是(1)
错误:(null)|(null)|(null)
现在,如果我关闭我的应用程序,然后重新打开它(甚至亲自检查Sqllite.db),更改不会被保存。我一直都知道自己的名字
下面是我如何创建ManagedObjectContext的:
[managedObjectStore createPersistentStoreCoordinator];
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Maindb.sqlite"];
NSString *seedPath = [[NSBundle mainBundle] pathForResource:@"Maindb" ofType:@"sqlite"];
NSError *error;
NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:seedPath withConfiguration:nil options:nil error:&error];
NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error);
有什么想法吗
谢谢 需要调用托管ObjectStore的savePersistentStore方法:[managedObjectStore.mainQueueManagedObjectContext保存:&错误];[managedObjectStore.mainQueueManagedObjectContext保存到PersistentStore:&错误] 这就是答案。但就个人而言,RestKit将太多东西打包在一起。事实上,CoreData编程的效率并不高。