当前位置: 首页 > news >正文

泰州网站建设价位重庆seo俱乐部

泰州网站建设价位,重庆seo俱乐部,洞头网站建设,织梦cms怎么安装文章目录 前言Core Data 私有队列上下文SwiftData 并发支持使用 ModelActor合并上下文更改的问题通过标识符访问模型总结 前言 SwiftData 是一个用于处理数据操作的框架#xff0c;特别是在 Swift 语言中进行并发操作。本文介绍了如何在后台执行 SwiftData 操作以及与 Core D… 文章目录 前言Core Data 私有队列上下文SwiftData 并发支持使用 ModelActor合并上下文更改的问题通过标识符访问模型总结 前言 SwiftData 是一个用于处理数据操作的框架特别是在 Swift 语言中进行并发操作。本文介绍了如何在后台执行 SwiftData 操作以及与 Core Data 进行比较。 在 Core Data 中可以使用私有后台队列上下文来执行长时间运行的任务以避免阻塞主队列。SwiftData 利用了 Swift 的并发特性通过在 ModelActor 上创建上下文实现了类似的后台操作。然而与 Core Data 不同的是SwiftData 通过编译器强制执行一些规则如不允许在非主 actor 上访问主 view 上下文。 Core Data 私有队列上下文 在使用 Core Data 时使用主队列上的视图上下文执行 UI 操作。为了避免阻塞主队列可以使用私有后台队列上下文执行长时间运行的任务如解析和导入数据。 必须注意不要在队列之间传递 Core Data 管理的对象。如果需要在线程之间传递对象可以使用 NSManagedObjectID 来实现。 SwiftData 并发支持 SwiftData 利用了 Swift 的现代并发特性。可以使用在 ModelActor 上创建的上下文来执行后台工作。 与 Core Data 类似Model 对象和 ModelContext 都不能在 actor 之间传递它们都不是可发送的。与 Core Data 不同的是Swift 编译器强制执行这些规则。例如在不在主 actor 上时尝试访问主视图上下文将导致错误 无法在非隔离 actor 实例上引用主 actor 隔离属性 mainContext 使用 ModelActor 一开始我们需要创建一个自己实现了 ModelActor 协议的 actor。模型 actor 为我们提供了要使用的上下文。ModelExecutor 控制对模型 actor 的访问。 创建 actor 时可以使用 ModelContainer 创建一个新的上下文并使用它来创建 DefaultModelExecutor。我的示例代码有一个用于 Country 对象的模型因此我可以像这样创建一个模型 actor 来执行后台操作 import SwiftDataactor CountryModelActor: ModelActor {let executor: any ModelExecutorinit(container: ModelContainer) {let context ModelContext(container)executor DefaultModelExecutor(context: context)}func doSomething() { ... } }注意 ModelContainer 是可发送的因此我们可以安全地将其传递给 actor 的初始化器。ModelActor 有 container 和 context 属性但不需要直接设置它们。 我们在这个 actor 中做的任何工作都可以访问上下文以插入、获取和删除所需的对象。例如我已经在 actor 中添加了一个方法该方法获取所有已访问的国家并将 visited 标志重置为 false func resetVisited() throws {let fetchDescriptor: FetchDescriptorCountry FetchDescriptor(predicate: #Predicate { $0.visited true }) let countries try context.fetch(fetchDescriptor)for country in countries {country.visited false}// 详见下面的注释// try context.save() }可能会这样在我的视图代码中使用它 func resetVisited() {Task {let actor CountryModelActor(container: container)do {try await actor.resetVisited()} catch {logger.error(resetVisited: \(error.localizedDescription))}} }合并上下文更改的问题 看到许多开发者抱怨在后台上下文上执行的更改不会立即合并到视图上下文中。在当前的测试版中如果在 actor 中保存上下文FB12965835也会遇到相同的问题。 如果不在 actor 中保存上下文启用了自动保存则用户界面会立即更新。这是一系列 SwiftData 中的问题之一希望在测试版结束之前能够得到修复。 通过标识符访问模型 与 Core Data 一样如果需要在 actor 之间传递模型对象应使用模型对象的持久标识符 country.persistentModelIDModelActor 提供了一个方便的下标以通过标识符检索模型对象。例如actor 中的此方法设置了通过标识符传递的一组国家的 visited 标志 func visit(identifiers: [Country.ID]) {for identifier in identifiers {if let country self[identifier, as: Country.self] {country.visited true}} }使用下标等效于编写 if let country context.model(for: identifier) as? Country { ... }总结 在操作数据模型时需要注意不要在不同的 actors 之间传递管理的对象。取而代之的是可以使用 NSManagedObjectID 来在不同的线程之间传递对象。 此外文章还提到了一些问题如在后台上下文上执行的更改可能不会立即合并到主视图上下文中。然而SwiftData 框架的优势在于利用了 Swift 的现代并发特性为数据操作提供了更强大的支持使开发人员能够在处理数据时更加灵活和高效。
http://www.w-s-a.com/news/231977/

相关文章:

  • 做网站可以用哪些语言如何进行网站运营与规划
  • 做效果图网站有哪些电子商城网站制作数据库
  • 小刘网站建设wordpress调用php文件上传
  • 建设银行对账网站网络营销广告案例
  • 做网站开票是多少个点的票wordpress扫码提交数据库
  • 织梦网站改版需要怎么做企业网站备案管理系统
  • 大规模网站开发语言宁夏建设职业技术学院网站
  • 寻花问柳专注做一家男人爱的网站北京展台设计制作
  • 中卫网站设计做自己的卡盟网站
  • 广州网站推广自助做网站人家直接百度能搜到的
  • 电子商务网站建设目标及利益分析安徽建设厅网站施
  • 制作网站策划书网站建设公司的性质
  • 哪个网站可以做免费宣传简单的网页设计网站
  • 福州专业网站制作公司金湖建设局网站
  • 好的移动端网站模板下载兰州线上广告推广
  • 宁波高端建站深圳品牌营销策划机构
  • 权威网站优化价格建设厅科技中心网站首页
  • 保定模板建站软件腾讯云做淘客网站
  • 单位建设一个网站的费用正规刷手机单做任务网站
  • 北京定制网站价格开网店怎么卖到外国
  • 做网站 后端是谁来做的工程建设指挥部网站
  • wordpress建站 云打印昆明 网站设计
  • 太原网站建设设计网站建设策划书(建设前的市场分析)
  • 哪里有制作网站电商新手入门知识
  • 制作网站的后台文昌网站建设 myvodo
  • 网站 购买移动网站制作
  • 南京网站网站建设学校英山做网站多少钱
  • 珠海网站建设网如何注册公司公众号
  • 手机网站页面制作网站怎么做快照
  • asp网站怎么仿站推广软件下载平台