Ios 你能上传一个已经在CoreData中有数据的iPhone review应用程序吗?

Ios 你能上传一个已经在CoreData中有数据的iPhone review应用程序吗?,ios,core-data,Ios,Core Data,我是iPhone开发新手。我意识到有很多方法可以在用户最初打开应用程序时导入数据。然而,手动(通过应用程序模拟器中的应用程序UI)将数据加载到CoreData中,然后再上传到苹果进行审查似乎更容易(在我的应用程序中)。 关于应用程序的更多背景信息。这是一个举重/记录应用程序。我想用上面描述的方法“预加载”一些初始练习和训练计划,让用户开始。 这可能吗?或者输入模拟器的数据只存储在我的本地计算机上,而不是在提交时发送给苹果的应用程序包中 是的,你可以。您可以在第一次运行时将捆绑SQLite文件从您

我是iPhone开发新手。我意识到有很多方法可以在用户最初打开应用程序时导入数据。然而,手动(通过应用程序模拟器中的应用程序UI)将数据加载到CoreData中,然后再上传到苹果进行审查似乎更容易(在我的应用程序中)。 关于应用程序的更多背景信息。这是一个举重/记录应用程序。我想用上面描述的方法“预加载”一些初始练习和训练计划,让用户开始。
这可能吗?或者输入模拟器的数据只存储在我的本地计算机上,而不是在提交时发送给苹果的应用程序包中

是的,你可以。您可以在第一次运行时将捆绑SQLite文件从您的资产复制到documents目录,并使用生成的URL作为核心数据存储的路径。

是的,可以上载iphone应用程序,其中包含数据库中的一些数据。

数据库是一个文件。其名称和位置由您在设置
NSPersistentStoreCoordinator
时定义

如果您使用的是Xcode AppDelegate生成的模板代码,则其名称以您的应用程序名命名
MyApp.sqlite
,并位于应用程序文档文件夹中

您需要填充数据库,然后将文件从模拟器文件夹复制到Xcode项目中。然后,您需要确保它是捆绑资产之一。将其添加到项目时,默认情况下应为

当应用程序首次启动时,您可以将文件从捆绑包复制到用户本地安装的Documents文件夹中

NSError *error = NULL;
NSString *dbPath = [[NSBundle mainBundle] pathForResource:@"myApp" ofType:@"sqlite"];
NSString *docsfolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *targetpath = [docsfolder stringByAppendingPathComponent:[dbPath lastPathComponent]];
[[NSFileManager defaultManager] copyItemAtPath:dbPath toPath:targetpath error:&error];
不要尝试将捆绑包中的文件作为活动存储引用,因为您没有该文件的写入权限

但是,如果需要,可以将持久存储设置为只读

[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options: NSReadOnlyPersistentStoreOption error:&error]`

你可以毫无问题地做。 您只需填写数据库并将其包含在项目中。 添加代码以将此文件复制到设备上的目标(例如:库/缓存文件夹)


然后像使用一个新的一样使用它。

谢谢你的回复Warren(我接受了它),但是你能给我一点更详细的说明(如果不是太麻烦的话,如何实现)“当你的应用首次启动时,你可以将包中的文件复制到用户本地安装的Documents文件夹中”?请参阅我的编辑。这是一个简单的示例,但您需要处理错误情况(就像文件已经存在一样)