[SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI
1. 发生问题的demo

业务逻辑代码
class Address: ObservableObject {@Published var street = "123 Apple Street"@Published var city = "Cupertino"
}class User: ObservableObject {@Published var name = "Tim Cook"@Published var address = Address()
}struct ContentView: View {@ObservedObject var user = User()var body: some View {VStack {Text("Name: \(user.name)")Text("Address: \(user.address.street), \(user.address.city)")Button("Change Address") {user.address.street = "New York"}}}
}
当我有一个嵌套的ObservedObject时,嵌套对象的已发布属性的更改不会更新UI,直到父对象发生变化,才会刷新。
2. 修改后的代码
SwiftUI(更准确地说是Combine)只能看到值的变化,因此,它可以看到@Published结构实例的属性值的变化,而不能看到@Published类。
如果您希望基于这些嵌套对象的属性值的更改来更新Ul,则使用嵌套对象的结构实例。如果必须使用类实例,请使用另一种机制显式地通知更改。下面是使用struct代替class的NestedObject修改的代码
业务逻辑代码
struct Address {var street = "123 Apple Street"var city = "Cupertino"
}class User: ObservableObject {@Published var name = "Tim Cook"@Published var address = Address()
}struct ContentView: View {@ObservedObject var user = User()var body: some View {VStack {Text("Name: \(user.name)")Text("Address: \(user.address.street), \(user.address.city)")Button("Change Address") {user.address.street = "New York"}}}
}
总结一句话,一个对象只需要当前属性@Published就可以了,子类使用struct
相关文章:
[SwiftUI 开发] 嵌套的ObservedObject中的更改不会更新UI
1. 发生问题的demo 业务逻辑代码 class Address: ObservableObject {Published var street "123 Apple Street"Published var city "Cupertino" }class User: ObservableObject {Published var name "Tim Cook"Published var address Addr…...
全面了解机器学习
目录 一、基本认识 1. 介绍 2. 机器学习位置 二、机器学习的类型 1. 监督学习 2. 无监督学习 3. 强化学习 三、机器学习术语 1. 训练样本 2. 训练 3. 特征 4. 目标 5. 损失函数 四、机器学习流程 五、机器学习算法 1. 分类算法 2. 聚类算法 3. 关联分析 4. …...
作为图形渲染API,OpenGL和Direct3D的全方位对比。
当你在网页看到很多美轮美奂的图形效果,3D交互效果,你知道是如何实现的吗?当然是借助图形渲染API了,说起这个不就不得说两大阵营,OpenGL和Direct3D,贝格前端工场在本文对二者做个详细对比。 一、什么是图形…...
安装Rabbitmq遇到的坑
!!!一定要对号版本号 不同的虚拟机unbontu、cetenos和不同的erlang和不同的rabbitmq之间要对应下载对应版本 下面给出我的版本centos7erlangrabbitmq 分割线 安装好后,如果在虚拟机的服务器上可以打开,在本地浏览器…...
React+TS 从零开始教程(4):useEffect
上一节传送门:ReactTS 从零开始教程(3):useState 源码链接:https://pan.quark.cn/s/c6fbc31dcb02 上一节,我们已经学会了React的第一个Hook:useState。 这一节,我们要学习的是另一…...
网络安全学习路线图(2024版详解)
近期,大家在网上对于网络安全讨论比较多,想要学习的人也不少,但是需要学习哪些内容,按照什么顺序去学习呢?其实我们已经出国多版本的网络安全学习路线图,一直以来效果也比较不错,本次我们针对市…...
你了解人工智能吗?
前言 人工智能(Artificial Intelligence,AI)是计算机科学的一个重要分支,致力于开发能够执行通常需要人类智能的任务的系统。本文将从历史发展、关键技术、应用领域以及未来挑战等方面,深入探讨人工智能的相关内容。 …...
如何使用Vue.js实现动态文档生成与下载功能
在现代Web应用开发中,用户往往需要在浏览器端完成复杂的操作,如生成和下载特定格式的文档,而无需服务器直接干预。本文将以一个Vue.js应用程序为例,详细介绍如何利用axios(或自定义请求模块)结合FileReader…...
web基础及http协议
一、WEB:就是我们所说的页面,点开的每个页面都是web。(全球广域网、万维网) 分布式图形信息系统:同一个服务,但是部署在不同的机器上且提供的服务和内容全部一致,集群就是建立在分布式的基础上。…...
【vuejs】vue-router 之 addRoute 动态路由的应用总结
1. Vue Router 概述 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用。它与 Vue.js 深度集成,让开发者能够轻松地构建具有复杂用户界面的单页面应用。Vue Router 允许你定义不同的路由,并通过 router-view 组件在应用中显示匹配的…...
LeetCode 30. 串联所有单词的子串
LeetCode 30. 串联所有单词的子串 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words [“ab”,“cd”,“ef”], 那么 “abcd…...
python本学期所有代码!
第一单元 ----------------------------------------------------------------------- #圆面积的计算 radius 25 area 3.1415 * radius * radius print(area) print("{:.2f}".format(area)) --------------------------------------------------------------------…...
武汉星起航:无锡跨境电商加速“出海”,物流升级助品牌全球布局
随着全球化的不断深入,跨境电商作为数字外贸的新业态,正逐渐成为无锡企业拓展海外市场的重要渠道。武汉星起航关注到,近年来,无锡市通过积极推进国际物流枢纽建设,完善海外仓布局,以及各特色产业带的积极参…...
Python+Pytest+Allure+Yaml+Pymysql+Jenkins+GitLab接口自动化测试框架详解
PythonPytestAllureYaml接口自动化测试框架详解 编撰人:CesareCheung 更新时间:2024.06.20 一、技术栈 PythonPytestAllureYamlJenkinsGitLab 版本要求:Python3.7.0,Pytest7.4.4,Allure2.18.1,PyYaml6.0 二、环境配置 安装python3.7&…...
stm32-hal库(5)--usart串口通信三种模式(主从通信)(关于通信失败和串口不断发送数据问题的解决)
问题: 最近发现,stm32cubemx最新版本f1系列的hal库(1.85版本)生成的hal库,其中stm32f1xx_hal_uart.c的库文件中,其串口发送接收存在一些问题: 1.没有使用 __HAL_LOCK 和 __HAL_UNLOCK 宏&…...
一文学会LVS:概念、架构、原理、搭建过程、常用命令及实战案例
引言 随着互联网技术的飞速发展,服务器负载均衡技术变得越来越重要。LVS(Linux Virtual Server)作为一种高效的负载均衡解决方案,广泛应用于各大企业的生产环境中。本文将深入探讨LVS的概念、架构、工作原理,详细讲解其…...
[Go 微服务] Kratos 使用的简单总结
文章目录 1.Kratos 简介2.传输协议3.日志4.错误处理5.配置管理6.wire 1.Kratos 简介 Kratos并不绑定于特定的基础设施,不限定于某种注册中心,或数据库ORM等,所以您可以十分轻松地将任意库集成进项目里,与Kratos共同运作。 API -&…...
【unity实战】使用旧输入系统Input Manager 写一个 2D 平台游戏玩家控制器——包括移动、跳跃、滑墙、蹬墙跳
最终效果 文章目录 最终效果素材下载人物环境 简单绘制环境角色移动跳跃视差和摄像机跟随效果奔跑动画切换跳跃动画,跳跃次数限制角色添加2d物理材质,防止角色粘在墙上如果角色移动时背景出现黑线条方法一方法二 墙壁滑行实现角色滑墙不可以通过移动离开…...
【实战】EasyExcel实现百万级数据导入导出
文章目录 前言技术积累实战演示实现思路模拟代码测试结果 前言 最近接到一个百万级excel数据导入导出的需求,大概就是我们在进行公众号API群发的时候,需要支持500w以上的openid进行群发,并且可以提供发送openid数据的导出功能。可能有的同学…...
Graalvm配置文件与Feature和Substitute机制介绍
GraalVM介绍 GraalVM提前将Java应用程序编译成独立与机器码二进制文件(可执行文件、动态库文件),如windows系统中的exe文件和dll文件。与在Java虚拟机(JVM)上运行的应用程序相比,这些二进制文件更小,启动速…...
电商内容自动化秘籍:构建商品知识库,小白也能轻松掌握大模型自动化(收藏版)
文章指出,电商内容自动化应首先建立商品知识库,而非直接接入模型或Agent。强调商品知识库是自动化稳定性的基础,缺乏统一认知将导致结果混乱。文章详细介绍了知识库应包含的基础字段、用户决策信息、信任证据和转化表达等要素,并阐…...
为Nodejs后端服务接入Taotoken实现AI内容生成功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Nodejs后端服务接入Taotoken实现AI内容生成功能 在构建现代后端服务时,集成AI内容生成能力已成为提升产品智能化的常…...
Python性能优化实战:Numba JIT编译器原理与高性能计算应用
1. 项目概述:当Python遇上性能瓶颈,Numba如何成为“救火队长”?在数据科学、科学计算和机器学习领域,Python以其简洁的语法和丰富的生态库(如NumPy、Pandas、SciPy)成为了事实上的标准语言。然而࿰…...
豪门贵公子具象化!庞钦宇现身TOD‘S家宴,举手投足间尽显骑士优雅
如果说马术是勇敢者的游戏,那么庞钦宇便是这场游戏中走出的优雅绅士。近日00后马术新星庞钦宇在TODS春日家宴上完成了一次惊艳的“跨界”。在这场汇聚名流与星光的盛事中,他褪去赛场的戎装,却未减半分骑士的矜贵。举手投足间这位年轻的骑手不…...
Llama 3专用JavaScript分词器:原理、API与实战指南
1. 项目概述:一个为Llama 3量身定制的JavaScript分词器 如果你正在Web端或Node.js环境中折腾大语言模型,特别是Meta家的Llama 3系列,那么处理文本的第一步——分词(Tokenization)——很可能就是你遇到的第一个拦路虎。…...
基于Seedream_MCP构建AI工具服务器:从协议解析到实战开发
1. 项目概述与核心价值最近在折腾AI应用开发,特别是想给大模型装上一个能“动手动脚”的插件系统时,发现了一个挺有意思的项目:skyinv/Seedream_MCP。简单来说,这是一个基于模型上下文协议的开源实现,它能让你的AI助手…...
AugGPT:基于上下文增强与智能检索的代码生成框架解析
1. 项目概述:当代码生成器遇上“增强现实”最近在GitHub上看到一个挺有意思的项目,叫“AugGPT”。光看名字,可能很多人会联想到OpenAI的GPT模型,觉得这又是一个基于大语言模型的代码生成工具。但如果你仔细琢磨一下这个仓库名“yh…...
蓝牙广播帧实战解析:从ADV_IND到AUX_CHAIN_IND的报文拆解
1. 蓝牙广播帧入门:为什么需要这么多类型? 刚接触蓝牙协议栈的开发者,第一次看到ADV_IND、ADV_DIRECT_IND这些缩写时,往往会感到一头雾水。我自己最初调试蓝牙设备时,就曾经对着抓包工具里密密麻麻的广播数据发愣——为…...
如何构建教育机构专属的离线编程教学平台:CodeCombat私有化部署实战
如何构建教育机构专属的离线编程教学平台:CodeCombat私有化部署实战 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat 你是否曾面临这样的困境:当50名学生同时在线编程时&am…...
AI智能体如何通过MCP协议标准化调用外部工具
1. 项目概述:当AI智能体学会“使用工具” 最近在探索AI智能体开发时,我遇到了一个非常有意思的项目: agentsimdev/agentsim-mcp 。乍一看这个名字,可能有些朋友会感到困惑,这“MCP”是什么?是“模型上下文…...
