【问题标题】:Read CoreData in Today Widget in Swift or Objective-C在 Swift 或 Objective-C 中读取 Today Widget 中的 CoreData
【发布时间】:2015-04-08 13:17:43
【问题描述】:

我真的需要一些简单代码来帮助我在 TodayWidget 中阅读 CoreData 我做了这个步骤:

  • 使用 CoreData 创建新项目(在 AppDelegate 中)
  • 在 CoreData 模型中创建一个实体和一些属性,如名称或日期
  • 在 App 的 ViewController 中,用“Martin”“10/11”这样的一条记录填写名称和日期

现在我需要在 TodayViewController 中读取这个名称

请真的在这里发布一些简单的代码,或者如何编辑 AppDelegate 以使用 appgroup ...

谢谢!

【问题讨论】:

    标签: ios objective-c xcode swift


    【解决方案1】:

    小部件必须能够读取其代码中的数据。为此,您需要将 CoreData 文件设置为位于项目的“组”文件夹中(您可以设置 CoreData 堆栈以将其文件重新定位在此文件夹中)。然后,您将在扩展中配置指向相同文件的 CoreData 堆栈。这些组文件夹是可以跨具有组权限的多个目标/应用程序访问的文件夹。

    我要指出的是,它比 CoreData 更容易使用和跨小部件同步 NSUserDefaults,它是适当的应用程序。

    您需要阅读以下 Apple 关于共享扩展数据的文档:

    Apple docs

    请注意以下部分:

    与包含的应用共享数据

    即使应用扩展包嵌套在其包含 应用程序的捆绑包,正在运行的应用程序扩展和包含的应用程序没有 直接访问彼此的容器。

    背景

    要了解容器,请阅读 File 中的 About the iOS File System 系统编程指南。

    但是,您可以启用数据共享。例如,您可能想要 允许您的应用扩展程序及其包含的应用程序共享一个 大量数据,例如预渲染资产。

    【讨论】:

    • 但我无法通过 AppDelegate 的“SharedApplication”管理 CoreData ...您能发布一些分步解决方案吗?我真的很困惑......
    • AppDelegate 与它无关,您可以忽略应用委托中的“管理”CoreData。扩展/小部件是具有单独代码的完全不同的目标。它不是您的应用程序的“一部分”。把它想象成一个单独的应用程序。因此,您必须与主应用程序分开读取/写入数据。不要依赖于在应用程序和小部件/扩展程序之间来回传递数据。阅读我在上面发布的关于共享数据的苹果文档。使用我上面所说的,小部件和应用程序将共享核心数据文件,仅此而已。
    • 我还想提一下,没有“简单”的代码可以显示。可以制作有关如何执行此操作的教程。它涉及在 2 个单独的应用程序中设置组和 CoreData 堆栈。
    • 是的,但我仍然不知道如何访问核心数据......真的我需要一些代码示例......
    • ...你明白我的意思吗?我真的需要一些代码示例如何读取存储在 CoreData 中的数据!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2019-07-20
    • 1970-01-01
    相关资源
    最近更新 更多