iOS模拟器中可见的SQLite文件但不可见的数据
我创建了一个使用核心数据的应用程序。现在,我想查看我在该应用程序的各个实体中存储的数据。应用程序已安装在iOS模拟器7.0.3中 无济于事 截图: 下面是我如何保存数据的iOS模拟器中可见的SQLite文件但不可见的数据,ios,objective-c,core-data,ios-simulator,Ios,Objective C,Core Data,Ios Simulator,我创建了一个使用核心数据的应用程序。现在,我想查看我在该应用程序的各个实体中存储的数据。应用程序已安装在iOS模拟器7.0.3中 无济于事 截图: 下面是我如何保存数据的 EffController *newController = [NSEntityDescription insertNewObjectForEntityForName:@"EffController" inManagedObjectContext:self.managedObjectContext]; newContr
EffController *newController = [NSEntityDescription insertNewObjectForEntityForName:@"EffController" inManagedObjectContext:self.managedObjectContext];
newController.name=@"fgfghjfghj";
newController.uniqueUID= @"ffghfg";
newController.parentOutputID = @0;
newController.localIP=@"***.***.***.***";
newController.localPort= @XXXX;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]
initWithEntityName:@"EffControllerType"];
NSError *requestError = nil;
/* And execute the fetch request on the context */
NSArray *types = [self.managedObjectContext executeFetchRequest:fetchRequest error:&requestError];
for (EffControllerType *type in types) {
if ([type.name isEqualToString:@"***********"]) {
newController.type= type;
break;
}
}
NSError *error = nil;
if (![newController.managedObjectContext save:&error]) { //here is the mistake.
//It should be self.managedobjectContext
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
在与@HaniIbrahim长时间讨论后编辑问题得到解决…但仍然不清楚为什么内容在应用程序中可见,而不是在sqlite文件中为什么选择托管对象的上下文?有人能帮你找到这个主题背后的真正问题吗?你可以使用Firefox的SQLite管理器插件查看数据。打开firefox->安装插件->打开插件->使用打开文件选项导航到下面的路径
Library/Application Support/iPhone Simulator/VERSION_OF_YOUR_SIMULATOR/Applications/YOUR_PROJECT(Usually in alphanumeric)/YOUR_DB_FILE.sqlite
这样就可以了
有许多插件和应用程序类似于SQLite Manager。您可以根据自己的意愿进行选择。在CoreData中插入、更新或删除任何内容后,您必须保存上下文以实际应用更新
NSError *error = nil;
[context save:&error]; // context is your managedObjectContext that you use to communicate with coreData
编辑
发布代码后,我发现您使用的是两个context self.managedObjectContext和newController.managedObjectContext?我有SQLite Manager。。在给定路径中找不到文件。请打开文件夹。。按Cmd+Shift+G,然后进入~Library/Application Support/iPhone Simulator/。。。你应该能够浏览。我知道,我能够访问文件夹。那里没有.sqlite文件。尽管~yourPath/document/中有一个sqlite文件,但问题是它不包含新数据。它只是从一开始就导入了数据。即使我删除了它,它也会在下一次启动时返回。真奇怪,嗯。。是否确保打开了正确的项目文件夹?因为你可能有很多项目文件夹里面有字母数字的名字。这可能会使人困惑。。这就是为什么我确信这一点。我没有任何其他使用核心数据的项目。。我重置了我的模拟器内容。问题是你在应用程序生命周期中保存了一些东西,而在SQLite文件中找不到它?而且你在下一次跑步中也找不到它?是的。。我可以找到SQLite文件,但找不到数据。我知道。我已经做到了。我可以在我的应用程序中看到数据。我看不到的是.sqlite文件中的数据。如果关闭应用程序并再次运行,您会看到您所做的更新吗?您可以发布sqlite文件的屏幕截图吗?特别是应该有你插入的数据的表?发布了截图在你发布代码后我觉得这里有一个大问题。。。您没有在此处调用相同的上下文self.managedObjectContext或newController.managedObjectContext。。。。我检查了引用,发现managedObject和managedObject都有指向其上下文的指针。