iOS如何做预先填充的Core数据?

时间:2012-07-04 16:14:09

标签: ios xcode core-data ios5

我需要我的申请工作如下:

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

2-应用程序将自动使用特定记录填充(基于核心数据)。 3-应用程序将正常运行。

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

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

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

是否有一种很好的技术可以仅使用核心数据并被Apple接受。

2 个答案:

答案 0 :(得分:4)

  1. 在模拟器中填充数据
  2. 从模拟器文件夹
  3. 制作SQLITE数据库的副本
  4. 将数据库作为资源添加到项目中。
  5. 在初始化Core Data堆栈之前执行类似的操作:
  6. 代码:

    // 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问题:Why was my application still rejected after excluding files from iCloud backup using this code?

答案 1 :(得分:3)

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