我在我的iOS应用程序中使用coreData。可能的是,用户添加,删除数据到数据库中。 我必须提供默认数据(一些不同的数据集)。 目前,我正在通过首次启动应用程序来创建数据库。我从csv文件中读取数据并用它创建数据库。 csv位于应用程序沙箱中; coreData(managedDocument)在ApplicationDocument中(在运行时创建...)。coredata - 传送/设置默认数据
它适用于我 - 但我问我,苹果是否允许,如果我将应用程序推到AppStore?
我在我的iOS应用程序中使用coreData。可能的是,用户添加,删除数据到数据库中。 我必须提供默认数据(一些不同的数据集)。 目前,我正在通过首次启动应用程序来创建数据库。我从csv文件中读取数据并用它创建数据库。 csv位于应用程序沙箱中; coreData(managedDocument)在ApplicationDocument中(在运行时创建...)。coredata - 传送/设置默认数据
它适用于我 - 但我问我,苹果是否允许,如果我将应用程序推到AppStore?
这种方法没有什么错,它不能成为拒绝的理由。还有另一种方式来做到这一点。您可以按照现在的方式创建数据库,复制.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
文件在你的包。
是的,苹果确实允许运送默认填充的数据库。 执行此操作的标准方法是在捆绑软件中发送缺省数据库,然后在启动时检查应用程序文档目录中是否有数据库,如果该数据库不存在,则将数据库从您的捆绑软件复制到文档目录。
我想到了这个解决方案;用一些@#ifdef DEBUG @删除创建时的代码,并按照你描述的方式使用sqlite。 – Thomas 2012-08-12 14:46:44
您还需要记住在归档应用程序之前取消选中“csv”形式的目标,因为您不再需要它了。 – Adam 2012-08-12 14:50:09
你是什么意思取消选中?如果我提供的sqlite文件,我必须删除csv?是的,当然 – Thomas 2012-08-12 15:34:11