iOS如何做预填充Core数据?

Posted

技术标签:

【中文标题】iOS如何做预填充Core数据?【英文标题】:iOS how to do pre-filled Core data? 【发布时间】:2012-07-04 16:14:09 【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:
    在模拟器中填充数据 从模拟器文件夹复制 SQLITE 数据库 将数据库作为资源添加到您的项目中。 在初始化您的 Core Data 堆栈之前执行以下操作:

代码:

// 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?

【讨论】:

其实他不想添加/删除/修改,直接从app bundle中读取就可以了,不用担心这些问题。【参考方案2】:

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

【讨论】:

以上是关于iOS如何做预填充Core数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftUI 2.0 和 Core Data 预填充数据

使用 Core Data 一对多关系从 JSON 数组填充 sqlite 数据库

如何在 ASP.NET Core 2.0 Razor 页面中填充下拉列表

了解如何将 UISearchBar 与 Core Data 一起使用

可以将 Core Data 与不同的预填充 sqlite db 一起使用吗?

在用数据填充实体后创建 Core Data 关系