iOS模拟器中可见的SQLite文件但不可见的数据

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

我创建了一个使用核心数据的应用程序。现在,我想查看我在该应用程序的各个实体中存储的数据。应用程序已安装在iOS模拟器7.0.3中

无济于事

截图:

下面是我如何保存数据的

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都有指向其上下文的指针。