Iphone 核心数据保存
我创建了一个实体对象,并试图将其保存到sqllite,它说保存完成,没有错误,但它不会显示在数据库中,没有任何解决该问题的建议 我使用以下代码Iphone 核心数据保存,iphone,objective-c,ipad,core-data,Iphone,Objective C,Ipad,Core Data,我创建了一个实体对象,并试图将其保存到sqllite,它说保存完成,没有错误,但它不会显示在数据库中,没有任何解决该问题的建议 我使用以下代码 Studies *study_NEW = (Studies *)[NSEntityDescription insertNewObjectForEntityForName:@"Studies" inManagedObjectContext:managedObjectContext_NEW]; study_NEW.SudyID = study.SudyID
Studies *study_NEW = (Studies *)[NSEntityDescription insertNewObjectForEntityForName:@"Studies" inManagedObjectContext:managedObjectContext_NEW];
study_NEW.SudyID = study.SudyID;
error = nil;
if (![study_NEW.managedObjectContext save:&error]) {
// Handle error
NSLog(@"Unresolved error study %@, %@", error, [error userInfo]);
abort(); // Fail
}
else{
NSLog(@"Study inserted successfuly");
}
执行此代码时,如果
NSManagedObjectContext
无效,则第一行将导致异常。所以我猜您的NSManagedObjectContext
没有连接到您认为应该连接到的持久存储。检查上下文设置代码。可能代码无法将持久存储连接到NSPersistentStoreCoordinator
我认为发送到没有持久存储的NSManagedObjectContext
的保存是NOP
,没有执行任何操作,应该总是成功的。所以我在我的一个项目中尝试了它,我注释掉了一个持久存储到上下文的附件,然后运行了这个程序。程序试图保存时引发异常。因此,必须有一个持久存储,否则发送到上下文的save消息将导致异常
那么什么是新的管理对象上下文呢?这是你的物品的属性吗?它是否有一个访问器方法,可以创建一个新的NSManagedObjectContext
关闭旧的上下文并覆盖持久存储?每次访问该属性时,都可能会删除以前保存的任何数据
这个代码示例很好。问题在于上下文的设置
Studies *study_NEW = (Studies *)[NSEntityDescription insertNewObjectForEntityForName:@"Studies" inManagedObjectContext:managedObjectContext_NEW];
//study_NEW.SudyID = study.SudyID;
[study_NEW setSudyID:[study SudyID]];
或
你所说的数据库是什么意思。。。?你在手动查看吗?只需在代码中检索其值…..我使用coredata保存和检索,而retrieve nothing返回我获取sqlite文件并打开它,我发现表研究不包含记录请显示用于显示数据的代码。这是一个简单的获取请求,我确保表是空的您是如何准备新的
managedObjectContext的?它是有效的MOC吗?日志文件中显示已成功插入的研究,这意味着插入成功
[study_NEW setSudyID:study.SudyID];
error = nil;
if (![study_NEW.managedObjectContext save:&error]) {
// Handle error
NSLog(@"Unresolved error study %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
else{
NSLog(@"Study inserted successfuly");
}