Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从SwiftUI视图持久化对核心数据项的更改

从SwiftUI视图持久化对核心数据项的更改
EN

Stack Overflow用户
提问于 2021-09-12 02:26:03
回答 1查看 182关注 0票数 1

我正在开发一个SwiftUI应用程序,它将显示来自Core数据库的多个条目。基本上,这类应用程序的XCode模板实现了什么。

我做了两个改变:

我将列表项视图的代码放入一个单独的文件中,(BookmarkableItemView)

  • I向该项添加了一个属性bookmarked,我称之为BookmarkableItem

在我看来,显示项目列表的代码现在是:

代码语言:javascript
运行
AI代码解释
复制
List(bookmarkableItems) { item in
    BookmarkableItemView(item: item)
}

BookmarkableItemView中,item属性是@ObservedObject

现在,我的BookmarkableItemView还包含一个按钮,它应该在视图所代表的项上切换bookmarked属性。一切都很好-这很简单。但现在我必须坚持改变..。

我可以想到以下两种解决方案:

  • 将一个操作(简单的(BookmarkableItem) -> Void)传递给BookmarkableItemView,然后在按下视图中的按钮时调用该操作,
  • 将视图本身保存为托管对象上下文

在我看来,后者是不可接受的。第一种解决方案有效。现在在bookmarkAction中有一个BookmarkableItemView属性,所以上面的代码如下所示:

代码语言:javascript
运行
AI代码解释
复制
List(bookmarkableItems) { item in
    BookmarkableItemView(bookmarkAction: { toggleBookmark(item) }, item: item)
}

该操作由BookmarkableItemView调用,因此调用toggleBookmark(_ item:)方法。

但是不知怎么的,我觉得我遗漏了一些关于SwiftUI绑定的东西,这会使这个过程更容易吗?当子视图执行对数据模型的更改时,如何让我的父视图得到通知,以便我能够持久化它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-12 02:51:34

onDisappear检查是否item.hasChanges

或者在item.hasChanges上使用item.hasChanges

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69150547

复制
相关文章
从hudi持久化文件理解其核心概念
这是hudi系列的第一篇文章,先从核心概念,存储的文件格式加深对概念的理解,后续再逐步对使用(spark/flink入hudi,hudi同步hive等)、原理(压缩机制,索引,聚族等)展开分享~
陈猿解码
2023/02/28
9830
从hudi持久化文件理解其核心概念
避免 SwiftUI 视图的重复计算
随着近年来有关 SwiftUI 的文章与书籍越来越多,开发者应该都已经清楚地掌握了 —— “视图是状态的函数” 这一 SwiftUI 的基本概念。每个视图都有与其对应的状态,当状态变化时,SwiftUI 都将重新计算与其对应视图的 body 值。
东坡肘子
2022/08/03
9.3K0
避免 SwiftUI 视图的重复计算
用NavigationViewKit增强SwiftUI的导航视图
如果想获得更好的阅读体验,请访问我的博客 www.fatbobman.com[1]
东坡肘子
2022/07/28
3.3K0
用NavigationViewKit增强SwiftUI的导航视图
SwiftUI:视图的显示和隐藏动画
SwiftUI最强大的功能之一是能够自定义视图的显示和隐藏方式。以前,您已经了解了如何使用常规if条件有条件地包含视图,这意味着当条件更改时,我们可以从视图层次结构中插入或移除视图。
韦弦zhy
2020/04/16
4.7K0
SwiftUI 视图的生命周期研究
在 UIKit(AppKit)的世界中,通过框架提供的大量钩子(例如 viewDidLoad、viewWillLayoutSubviews 等),开发者可以将自己的意志注入视图控制器生命周期的各个节点之中,宛如神明。在 SwiftUI 中,系统收回了上述的权利,开发者基本丧失了对视图生命周期的掌控。不少 SwiftUI 开发者都碰到过视图生命周期的行为超出预期的状况(例如视图多次构造、onAppear 无从控制等)。
东坡肘子
2022/07/28
4.6K0
为什么SwiftUI的视图使用结构体?
如果您曾经为UIKit或AppKit(Apple的iOS和macOS原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。SwiftUI并非如此:我们更喜欢将结构体用于整体视图,这有两个原因。
韦弦zhy
2020/03/26
3.2K0
在SwiftUI中使用UIKit视图
已迈入第三个年头的SwiftUI相较诞生初始已经提供了更多的原生功能,但仍有大量的事情是无法直接通过原生SwiftUI代码来完成的。在相当长的时间中开发者仍需在SwiftUI中依赖UIKit(AppKit)代码。好在,SwiftUI为开发者提供了便捷的方式将UIKit(AppKit)视图(或控制器)包装成SwiftUI视图。
东坡肘子
2022/07/28
8.3K0
在SwiftUI中使用UIKit视图
为什么 SwiftUI 的视图使用结构体
如果您曾经为 UIKit 或 AppKit(Apple 的 iOS 和 macOS 原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。SwiftUI 并非如此:我们更喜欢将结构体用于整体视图,这有两个原因。
Swift社区
2021/11/26
2.5K0
为什么 SwiftUI 的视图使用结构体
SheetKit——SwiftUI模态视图扩展库
如果想获得更好的阅读体验,可以访问我的博客 www.fatbobman.com。[1]
东坡肘子
2022/07/28
2.9K0
SheetKit——SwiftUI模态视图扩展库
在 SwiftUI 视图中打开 URL 的若干方法
本文将介绍在 SwiftUI 视图中打开 URL 的若干种方式,其他的内容还包括如何自动识别文本中的内容并为其转换为可点击链接,以及如何自定义打开 URL 前后的行为等。
东坡肘子
2022/07/28
7.8K1
在 SwiftUI 视图中打开 URL 的若干方法
构建稳定的预览视图 —— SwiftUI 预览的工作原理
作为 SwiftUI 最引人注目的功能之一,预览功能吸引了不少开发者初次接触 SwiftUI。然而,随着项目规模的增长,越来越多的开发者发现预览功能并不如最初想象的那么易用。由于预览崩溃的次数和场景的增加,一些开发者已经视预览为 SwiftUI 的缺点之一,并对其产生了排斥感。
东坡肘子
2023/07/08
6010
构建稳定的预览视图 —— SwiftUI 预览的工作原理
在 SwiftUI 中用 zIndex 调整视图显示顺序
本文将对 SwiftUI 的 zIndex 修饰符做以介绍,包括:使用方法、zIndex 的作用域、通过 zIndex 避免动画异常、为什么 zIndex 需要设置稳定的值以及在多种布局容器内使用 zIndex 等内容。
东坡肘子
2022/07/28
1.8K0
在 SwiftUI 中用 zIndex 调整视图显示顺序
在 SwiftUI 中实现视图居中的若干种方法
将某个视图在父视图中居中显示是一个常见的需求,即使对于 SwiftUI 的初学者来说这也并非难事。在 SwiftUI 中,有很多手段可以达成此目的。本文将介绍其中的一些方法,并对每种方法背后的实现原理、适用场景以及注意事项做以说明。
东坡肘子
2022/12/16
6.8K0
在 SwiftUI 中实现视图居中的若干种方法
SwiftUI: 从 React 开发人员的角度看 SwiftUI
最近我通过学习 SwiftUI 时,令我印象最深的就是我对它的熟悉程度,因为我已经在 React 和 TypeScript上工作了几年了。
小弟调调
2021/04/28
2.1K0
SwiftUI: 从 React 开发人员的角度看 SwiftUI
从源码看redis的AOF持久化机制
AOF持久化就是把命令按照原始的文本存储到文件中,在重新启动的时候再一条条的执行。
爬蜥
2020/04/22
4710
客快物流大数据项目(七十七):使用Impala对kudu更改表属性操作
开发人员可以通过更改表的属性来更改 Impala 与给定 Kudu 表相关的元数据。这些属性包括表名, Kudu 主地址列表,以及表是否由 Impala (内部)或外部管理。
Lansonli
2022/12/19
9980
客快物流大数据项目(七十七):使用Impala对kudu更改表属性操作
Redis 持久化之AOF持久化&混合持久化
RDB(snapshotting) 是一种内存快照的方式进行持久化,AOF(append-only-file)是通过追加写入命令的方式进行持久化,混合持久化是指RDB和AOF协同完成持久化工作来发挥各自有点的持久化方式。
邹志全
2019/07/31
1.7K0
Redis从入门到放弃(6):持久化
Redis作为一种高性能的内存数据存储系统,常被用作缓存、会话存储、消息队列等多种应用场景。然而,由于其数据存储在内存中,一旦发生意外或服务器重启,数据就会丢失。为了保障数据的持久性和安全性。
夕阳也是醉了
2023/10/16
2440
Redis从入门到放弃(6):持久化
从bgsave命令看redis的RDB持久化机制
redis通过bgSave命令将数据持久化到磁盘上,在启动的时候,可以从磁盘上加载bgSave生成的RDB文件,恢复数据
爬蜥
2020/04/01
9190
从bgsave命令看redis的RDB持久化机制
苹果推出 SwiftData,可替代 SwiftUI 的 Core Data
苹果于 WWDC 2023 上推出新框架 SwiftData,提供声明性的、以 Swift 为先的 API,可在 iOS 应用中进行数据持久化工作。SwiftData 可轻松将一个 Swift 类转换为一个持久化模型,非常适合同 SwiftUI 一并使用。
深度学习与Python
2023/08/09
1.5K0
苹果推出 SwiftData,可替代 SwiftUI 的 Core Data

相似问题

对不持久化的核心数据对象的更改

20

SwiftUI:如何通过不同的视图持久化状态?

14

添加SwiftUI后删除核心数据项

12

对实体进行更改时核心数据持久化的问题

10

如何将状态从类持久化到单独的SwiftUI视图?

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文