3

我需要我的应用程序工作如下:

1-用户下载并启动应用程序。

2- 应用程序将自动用特定记录填充(基于核心数据)。3-应用程序可以正常工作。

4-当用户关闭应用程序并重新启动它时。

5_应用程序不会自动用特定记录填充核心数据,因为它已经存在。

6-用户将无法添加/删除/更新数据。

是否有一种仅使用核心数据并被 Apple 接受的好技术来做到这一点。

4

2 回答 2

4
  1. 在模拟器中填充数据
  2. 从模拟器文件夹复制 SQLITE 数据库
  3. 将数据库作为资源添加到您的项目中。
  4. 在初始化你的核心数据堆栈之前做这样的事情:

代码:

// Put down default db if it doesn't already exist
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:storePath]) {
    NSString *defaultStorePath = [[NSBundle mainBundle] 
                                  pathForResource:@"MyDataFile" ofType:@"sqlite"];
    if (defaultStorePath) {
        [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];

    }
}

未显示,但很重要:根据 App Store 指南,您预填充数据的所有文件都必须标记为“不备份”,否则您将被拒绝。有关如何执行此操作的一些详细信息,请参阅此 SO 问题:使用此代码从 iCloud 备份中排除文件后,为什么我的应用程序仍然被拒绝?

于 2012-07-04T17:14:50.477 回答
3

我可以告诉你一种非常简单的方法。在应用程序委托中,在 NSUserDefaults 中创建一个变量,并在第一次加载应用程序时更改其值。然后根据 NSUserDefaults 的值,在 Core Data 存储中填充您想要的数据。这只会发生一次,因为 NSUserDefaults 变量的值不会再次改变。

于 2012-07-04T17:02:46.287 回答