从 iOS 14 小部件的 CoreData 获取数据

2024-03-24

我想在小部件中显示从核心数据获取的数据。但@FetchRequest不适用于小部件。

据我了解,我们必须创建一个应用程序组并创建一个共享的持久容器。

我想知道的是如何从共享的持久容器中读取(获取)小部件上的数据,或者简单地,如何在小部件中显示从 Core Data 获取的数据.


首先,您需要创建一个应用程序组,它将用于创建核心数据持久容器(here https://useyourloaf.com/blog/sharing-data-with-a-widget/很好地解释了如何做到这一点)

然后,您需要创建自己的 Core Data 堆栈(当您创建启用 Core Data 的新空项目时可以找到示例)。

  • 在 MVVM 应用程序中访问核心数据堆栈 https://stackoverflow.com/a/61572075/8697793

假设您已经创建了核心数据模型(此处称为DataModel),您现在需要将容器 url 设置为您的自定义共享容器位置:

  • iOS 14 SwiftUI 中主 App 和 Widget 之间共享数据 https://stackoverflow.com/a/63925053/8697793
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: <your_app_group>)!
let storeURL = containerURL.appendingPathComponent("DataModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)

let container = NSPersistentContainer(name: "DataModel")
container.persistentStoreDescriptions = [description]
container.loadPersistentStores { ... }

现在您可以获得managedObjectContext来自您的共享持久容器:

let moc = CoreDataStack.shared.managedObjectContext

并用它执行获取请求(更多信息here https://medium.com/@aliakhtar_16369/mastering-in-coredata-part-9-nsfetchrequest-d9ad991355d9)

let predicate = NSPredicate(format: "attribute1 == %@", "test")
let request = NSFetchRequest<SomeItem>(entityName: "SomeItem")
let result = try moc.fetch(request)

除了上面的所有链接之外,我建议您还阅读有关核心数据的教程:

  • SwiftUI 核心数据教程:入门 https://www.raywenderlich.com/9335365-core-data-with-swiftui-tutorial-getting-started

Here is a GitHub repository https://github.com/pawello2222/WidgetExamples#coredata-widget with different Widget examples including the Core Data Widget.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 iOS 14 小部件的 CoreData 获取数据 的相关文章

随机推荐

  • 从 C# 调用批处理文件

    我希望这是一个简单的问题 但我的 C 应用程序中有以下代码 由于某种原因 它不会执行我指向的批处理文件 private void filesystemwatcher Renamed object sender System IO Renam
  • 通过 javac 使用多个 .jar

    请原谅我的术语 我正在尝试将三个 jar 文件与 java 程序一起用于我的 CS 课程 第一个是funjava 一种简化的java语言 其他的是类定义颜色和几何 这是我的代码以及当我尝试运行它时会发生什么 import colors cl
  • Ruby 中的 preg_match_all 和 preg_replace

    我正在从 php 过渡到 ruby 我试图找出 ruby 中 php 命令 preg match all 和 preg replace 的同源 太感谢了 Ruby 中的等价物preg match all is String scan htt
  • 解析具有已知结构和重复元素的 XML 文件

    我正在尝试从包含大量具有重复名称的元素的 XML 文件中解析信息 以下是我尝试解析的文件类型的示例 仅包含一条记录
  • Linq to Xml:异常 - ' ' 字符(十六进制值 0x20)不能包含在名称中

    这是我的带有实体的实体类 Table Name CLINICAL ITEM MASTER public class ClinicalItemMaster Column public int CLIENT INPUT MHS ID get s
  • 如何使 F# 脚本文件和其他脚本语言在 Windows 中像 .exe、.cmd 和 .bat 文件一样工作

    可以配置 F 脚本文件 以便可以直接调用它们 而无需直接指定脚本运行程序应用程序及其文件扩展名 并且可以通过命令 PATH 环境变量进行访问 操作步骤如下 使用 Windows 资源管理器将特定脚本引擎设置为脚本文件类型扩展名的默认 打开方
  • CDI @Produces 具有多个属性文件

    感谢这篇文章 https stackoverflow com a 28047512 1227941 https stackoverflow com a 28047512 1227941我现在使用 CDI 使 msg 在我的 Named be
  • 在 C# windows 服务中捕获键盘事件

    我用 C 创建了一个 Windows 服务 如何在按下某个键时调用一个函数 并在该函数中获取该键的值 我需要它来按下键和按下键 我的目标是在按下特定系列的键时发送电子邮件 例如 如果您按 h e l l o 无论您在桌面上的哪个位置键入 程
  • TFS 2017 发布管理:如何显示发布下任务的父 PBI

    有没有办法在 TFS2017 下的列表中显示发布下的任务工作项的父 PBI The screenshot below shows two tasks associated with Release 3 Here I wish to be a
  • cipher 中 update() 和 dofinal() 方法之间的区别

    我读过一篇关于密码中 update 和 dofinal 方法之间差异的文章 这是关于如果我们想要加密 4 字节数组 当密码的块大小为 8 字节 时会发生什么 如果我们在这里调用 update 它将返回 null 我的问题是 如果我们用 4
  • 使用 Maven 和 IntelliJ 在 tomcat 中运行应用程序

    如果不使用 maven 要从 Intellij IDE 在 tomcat 上运行应用程序 您所要做的就是创建一个工件和指向该工件的 tomcat 运行配置 这样您就可以看到 tomcat 输出 重新启动服务器等就在 IDE 中 现在使用ma
  • 过渡状态图 R

    我的数据看起来像这样 输出dput sequence data structure list Obs 1 13 Seq 1 structure c 1L 1L 1L 1L 2L 2L 2L 2L 2L 2L 3L 3L 3L Label c
  • 使用 FFMPEG 将音频(带有偏移量)添加到视频

    我有一个 10 分钟的视频和一个 50 分钟的音频 mp3 视频从音频第 500 秒开始 使用 FFMPEG 如何将音频添加到视频但指定500 秒音频偏移 以便他们同步 EDIT 在这个底部page http howto pages org
  • 灰度图像到 NumPy 数组进行傅里叶变换

    目前我正在使用 PIL 和 NumPy 我有一个彩色的png图像 我想要 以灰度读取 转换为 NumPy 数组 对阵列执行 FFT 显示图像 这就是我正在尝试的 在 IPython w pylab flag In 1 import Imag
  • 如何使用多处理模块杀死进程?

    我有一个进程本质上只是一个无限循环 我有第二个进程是一个计时器 定时器完成后如何终止循环进程 def action x 0 while True if x lt 1000000 x x 1 else x 0 def timer time t
  • 如何通过另一种方法动态地将元素添加到反应器热通量中?

    我有一个数据源服务 它接受观察者作为参数 void subscribe Consumer onEventConsumer 我想使用 Flux 作为 RSocket 的响应流 我怎样才能做到这一点 我现在看到的应该是这样的 Flux
  • C# 中文字的算术运算是否在编译时计算?

    非常简短的问题 但我现在无法在网上找到解决方案 int test 1 2 Will 1 2在运行时或编译时执行 询问原因 我认为大多数人有时会使用文字而不指定其使用原因或含义 因为他们不想通过运行计算来浪费一点性能 并且我相信计算发生在编译
  • 无法访问 Azure 文件共享 |端口 445

    我已经设置了 Azure 存储文件 并在我的开发计算机中添加了一些防火墙规则来打开端口 445 但我现在无法访问我的文件共享 它也不响应 ping 命令 但我可以从 Azure VM IaaS 服务器访问相同的文件共享 有什么我错过的吗 不
  • ASP.NET MVC 3 - 如何从数据库填充单选按钮列表

    在 Asp net MVC 3 中 我的单选按钮设置如下 div class editor label Html LabelFor m gt m Roles div div class editor field Html RadioButt
  • 从 iOS 14 小部件的 CoreData 获取数据

    我想在小部件中显示从核心数据获取的数据 但 FetchRequest不适用于小部件 据我了解 我们必须创建一个应用程序组并创建一个共享的持久容器 我想知道的是如何从共享的持久容器中读取 获取 小部件上的数据 或者简单地 如何在小部件中显示从