核心数据保存
我创建了一个实体对象,并试图将其保存到sqllite好说储蓄进行的,没有错误,但它不会显示数据库中的任何建议,以解决核心数据保存
我用下面的代码
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");
}
Studies *study_NEW = (Studies *)[NSEntityDescription insertNewObjectForEntityForName:@"Studies" inManagedObjectContext:managedObjectContext_NEW];
//study_NEW.SudyID = study.SudyID;
[study_NEW setSudyID:[study SudyID]];
OR
[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");
}
执行此代码时,如果NSManagedObjectContext
无效,第一行会导致异常。所以我的猜测是你的NSManagedObjectContext
没有连接到你认为应该连接的持久存储。检查你的上下文设置代码。也许代码无法将持久性存储连接到NSPersistentStoreCoordinator
。
我以为一个保存发送到NSManagedObjectContext
没有持久性存储是NOP
,没有任何操作执行,应该总是成功。所以我尝试了一下我的项目,我评论了一个持久存储附加到上下文,并运行该程序。该程序试图保存时抛出异常。因此,您必须拥有持久存储区,否则发送到上下文的保存消息将导致异常。
那么什么是managedObjectContext_NEW
?这是你的对象的属性吗?它是否有一个访问器方法,可以创建新的NSManagedObjectContext
来破坏旧的上下文,并覆盖持久存储?每次访问该属性时,您都可以删除以前保存的任何数据。
此代码示例没有问题。问题在于上下文的设置。
成功插入的研究出现在日志文件,这意味着它插入成功 – AMH 2011-05-24 12:48:47
你是什么数据库的意思是......?你在手动查看吗?只需检索它的值在您的代码..... – 2011-05-24 11:58:51
我使用coredata保存和检索,而检索没有返回我得到的SQLite文件,并打开它我发现表研究不包含记录 – AMH 2011-05-24 12:01:06
请显示您的代码用来显示数据。 – Rayfleck 2011-05-24 12:15:54