我在哪里可以找到我的iPhone应用程序的Core Data持久存储?

时间:2010-05-09 23:38:52

标签: iphone database core-data

我正在深入开发iPhone,所以如果这是一个荒谬的问题我提前道歉,但在使用Core Data框架的新iPad应用程序项目中,这里是用于创建persistentStoreCoordinator的生成代码......

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

if (persistentStoreCoordinator != nil) {
    return persistentStoreCoordinator;
}

NSURL *storeUrl = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"ApplicationName.sqlite"]];

NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
    /*
     Replace this implementation with code to handle the error appropriately.

     abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. If it is not possible to recover from the error, display an alert panel that instructs the user to quit the application by pressing the Home button.

     Typical reasons for an error here include:
     * The persistent store is not accessible
     * The schema for the persistent store is incompatible with current managed object model
     Check the error message to determine what the actual problem was.
     */
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}    

return persistentStoreCoordinator;

}

我的问题是......

  1. 第一次运行应用程序时,如果ApplicationName.sqllite数据库不存在则会自动创建吗?如果没有,何时创建?以编程方式添加数据?
  2. 一旦数据库确实存在,我在哪里可以找到该文件?我想用不同的程序打开它,以便我可以手动操作数据。
  3. 非常感谢您的帮助!我现在要继续研究这些问题。

2 个答案:

答案 0 :(得分:4)

是的,如果不存在ApplicationName.sqlite数据库,则会创建该数据库。它将位于应用程序的Documents目录中(假设您的-applicationDocumentsDirectory方法返回的内容)。

如果您在模拟器中运行此功能,通常可以在~/Library/Application Support/iPhone Simulator中找到应用程序数据。在3.2+ SDK上,不同的OS版本用于对使用特定SDK构建的应用程序进行分组,因此您需要进入相应的版本目录,然后Applications,然后找到应用程序的数字编码目录(几乎通过反复试验)。将在那里找到Documents目录和sqlite数据库。

如果在设备上运行,您可以转到管理器,选择您的设备(连接到系统时),然后转到摘要选项卡中的应用程序分组。单击应用程序名称旁边的显示箭头,您可以将应用程序数据从那里拖出到一个目录中,将所有应用程序的工作数据从设备上的应用程序中提取出来。

答案 1 :(得分:3)

商店由

创建
addPersistentStoreWithType:configuration:URL:options:error:

方法。使用

NSLog(@"store path: %@", storeUrl);

applicationDocumentsDirectory

中查看商店的文件路径

要下载并浏览设备的整个applicationDocumentsDirectory,请使用Xcode Organizer:选择您的设备,点击应用程序的显示三角形,然后点击应用程序包右侧的箭头