【问题标题】:iOS Initial Core DataiOS 初始核心数据
【发布时间】:2013-06-13 20:43:44
【问题描述】:

我希望我的应用程序中包含一些初始核心数据对象。用户可以删除这些对象,并且在下次启动应用程序时,这些对象应该仍然消失。我如何才能实现它,以便只有当我的应用安装时,它才会使用我选择的初始值填充核心数据库?也就是说,我不希望每次应用启动或启动时都加载这些值;只有一次。有没有类似我们用xcode的图形界面创建实体的方法?

【问题讨论】:

  • 这个链接听起来很有帮助:CoreDataTut
  • 我读过,但它似乎可能会在应用程序启动时加载数据库值,即使在我的用户之前删除了所有初始值的情况下,因为它使用应用程序委托来初始化加载。另外,无论如何我都没有看到他在应用程序委托中指定的方法。
  • @user1529956,你显然没有读过它......你可能已经浏览了第一段?我将直接从该链接引用来回答您的第一个陈述......“这段代码检查是否已经存在此应用程序的 sqlite db。如果它不存在,它会找到预加载的路径我们加载的 sqlite db 并尝试将 db 复制到普通应用程序 db 的路径。”
  • @Albert Renshaw 这实际上是我读到的那句话,导致我发表声明。也许我误解了它,特别是说“......如果这个应用程序已经存在一个 sqlite db......” 如果我的用户从中删除所有对象,sqlite db 不会消失吗?这可能是我对sqlite db和核心数据关系的理解有误。
  • @user1529956 哦,不,它仍然会在那里它只是空的:)

标签: ios core-data


【解决方案1】:

只需以其他形式保存数据,例如plist 或 xml 文件,并在首次运行时将其导入,在代码中创建必要的 Core Data 对象并保存到持久存储中。您还应该设置一个NSUserDefaults 键来记录应用程序是否已经运行并且项目是否已成功创建。

当应用程序启动时,检查用户默认键,如果不存在,则填充,否则不要。仅检查持久存储的内容是不够的,因为正如您在问题中指出的那样,用户可能已经删除了种子数据。

如果您使用的是 iCloud,您应该首先检查该应用是否已在其他设备上运行。

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2018-11-26
    相关资源
    最近更新 更多