2012-08-12 97 views
2

我在我的iOS应用程序中使用coreData。可能的是,用户添加,删除数据到数据库中。 我必须提供默认数据(一些不同的数据集)。 目前,我正在通过首次启动应用程序来创建数据库。我从csv文件中读取数据并用它创建数据库。 csv位于应用程序沙箱中; coreData(managedDocument)在ApplicationDocument中(在运行时创建...)。coredata - 传送/设置默认数据

它适用于我 - 但我问我,苹果是否允许,如果我将应用程序推到AppStore?

回答

2

这种方法没有什么错,它不能成为拒绝的理由。还有另一种方式来做到这一点。您可以按照现在的方式创建数据库,复制.sqlite文件并将其作为默认数据库提供。然后在应用第一次运行时复制它。下面的代码将做到这一点:

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent: @"YourDBName.sqlite"]; 
    if (![fileManager fileExistsAtPath:storeURL.path]) { 
     NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"YourDBName" ofType:@"sqlite"]; 
     if (defaultStorePath) { 
      [fileManager copyItemAtPath:defaultStorePath toPath:storeURL.path error:NULL]; 
     } 
    } 

通过这种方法,你不会需要包括你csv文件在你的包。

+0

我想到了这个解决方案;用一些@#ifdef DEBUG @删除创建时的代码,并按照你描述的方式使用sqlite。 – Thomas 2012-08-12 14:46:44

+0

您还需要记住在归档应用程序之前取消选中“csv”形式的目标,因为您不再需要它了。 – Adam 2012-08-12 14:50:09

+0

你是什么意思取消选中?如果我提供的sqlite文件,我必须删除csv?是的,当然 – Thomas 2012-08-12 15:34:11

0

是的,苹果确实允许运送默认填充的数据库。 执行此操作的标准方法是在捆绑软件中发送缺省数据库,然后在启动时检查应用程序文档目录中是否有数据库,如果该数据库不存在,则将数据库从您的捆绑软件复制到文档目录。