引子

今天偶然发现 iOS 16 SwiftUI 开发中的一个问题。

具体情景为:

一个 SwiftUI + CoreData 的项目,使用 Xcode 14正式版开发。CoreData 数据库的 FireballGroup 托管对象有一个 derived 属性。


不知道 derived 属性为何物的小伙伴,请参考下面一篇博文:

CoreData如何实现托管对象的“计算”属性字段


在该托管对象内容发生改变时,该 derived 属性应该被重新计算,从而 SwiftUI 界面可以显示计算后的内容。

但测试发现在 iOS 16(无论是真机还是模拟器)中,托管对象被更改不会导致其 derived 属性被重新计算,只有重启 App 后才可以。

同样的代码在 iOS 15 中一切正常!

疑似 iOS 16 的Bug?

很难说这个问题不是一个Bug,因为从道理来说 derived 属性应该被实时刷新。

保不齐在 iOS 16 后续更新中它会被修复。

目前来说,我们可以使用托管对象的 willSave() 方法来临时解决它:

public override func willSave() {super.willSave()let count = fireballs?.count ?? 0setPrimitiveValue(count, forKey: #keyPath(FireballGroup.ballCount))
}

其中 FireballGroup.ballCount 是 FireballGroup 托管对象中的一个普通属性(非derived 属性),我们在 FireballGroup 托管对象发生变化时,实时重新计算 ballCount 的值。

用这种方法,托管对象 derived 属性不刷新的问题得到了临时的解决。

总结

在本篇博文中,我们解决了 iOS 16 Coredata 数据库中托管对象 derived 属性在 SwiftUI 中不刷新(重新计算)的问题,希望可以帮助到大家。

感谢观赏,再会!

iOS 16 中 CoreData 托管对象发生变化但其衍生 (Derived) 属性在 SwiftUI 中不刷新的解决相关推荐

  1. iOS 16升降级教程,抢先体验ios16!

    目前iOS/iPadOS 16已经推送了3个测试版本了,新增了心房颤动.iCloud共享照片库.台前调度.全新锁屏屏幕等等新功能,那么如何更新测试版抢先体验?也有很多小伙伴升级到iOS/iPadOS ...

  2. SwiftUI 中为什么应该经常用子视图替换父视图中的大段内容?

    概览 在 SwiftUI 官方教程中,Apple 时常提出"化整为零"的界面布局思想.简单来说,Apple 推荐 SwiftUI 视图的构建方式是:用若干自定义小视图来构成上层的功 ...

  3. Swift2.0 中的String(一):常用属性

    字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...

  4. ElementUI中实现表单刷新重置,保存在全局方法中

    elementUI中的resetFields方法 1.在el-form添加属性 在el-form中定义ref属性queryForm <el-form ref="queryForm&qu ...

  5. iOS 16 修改第三方库实现监听 SwiftUI 中 sheet 弹出视图的下滑关闭动作

    功能需求 我们已经在 iOS 16 中 SwiftUI 防止弹出的 sheet 视图被下滑关闭(dismiss)的新解决方案 这篇博文中介绍过如何在 iOS 16 中禁止用户下滑关闭弹出的 sheet ...

  6. iOS 数据库-SQLite3 CoreData FMDB

    在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储,包括偏 ...

  7. 苹果iOS 16将改进通知 添加新的健康追踪功能

    4月11日消息,据国外媒体报道,代号为"Sydney"的iOS16将在6月的WWDC上推出预览版,分析师称,总体来说不会有太大的设计改变,主要将对通知和新健康追踪功能进行改进. 据 ...

  8. iOS 16要来了:速度更快、UI改动明显?苹果WWDC大会或将在线下举行

    3月9日,苹果公司举办春季发布会,推出支持5G的第三代iPhone SE.搭载M1芯片的iPad Air 5.M1 Ultra芯片.搭载M1 Ultra芯片的Mac Studio桌面电脑和Apple ...

  9. 互联网晚报 | 06月07日 星期二 | 杭州调整住房公积金政策;苹果发布iOS 16;特斯拉回应裁员是否涉及中国地区...

    特斯拉裁员约10%涉及中国地区吗?相关人士:目前还在大量招人 针对全球暂停招聘的消息,一名接近特斯拉中国的相关人士透露,目前没有听说裁员消息,前不久还在大规模招人."特斯拉中国这边招聘非常严 ...

最新文章

  1. 实现数据“一键脱敏”,Sharding Sphere帮你搞定
  2. 【Javascript基础】
  3. 怎样让外界无法改变自定义view的尺寸大小
  4. ARM assembly instruction set 汇总(一)
  5. Spring 事务相关及@Transactional的使用建议
  6. Java虚拟机(JVM)面试题大集合
  7. 万能文件在线预览项目,开源!
  8. ddos攻击发送端 接收端_什么是DDOS攻击?
  9. ibm量子计算机 申请,【IBM量子计算机问世,造福人类的杰作!】IBM量子计算机已面前全球开放申请使用_来自网易大神圈子_科学企图玄学...
  10. java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0特殊字符表达
  11. zabbix 5.0所有依赖包_Zabbix“专家坐诊”第82期问答汇总
  12. sun.misc.BASE64Encoder找不到的解决方法
  13. Servlet期末复习笔记
  14. 千万58招聘人员的选择值得信赖-米苏 58自动循环发帖器
  15. php gmssl,gmssl
  16. 【软件工程导论题型大总结】简答题总结
  17. Ubuntu16.04 Caffe 安装步骤记录
  18. Win10 更改不了注册表,重启之后恢复原样
  19. 目前互联网的技术发展现状和趋势如何?
  20. java简单的正则表达式验证邮箱

热门文章

  1. Yolov5训练自己的数据集(详细完整版)
  2. java 裁剪网格纸_手工皮具纸模,怎么裁剪才漂亮?刀具裁切直线技巧分享!
  3. 机试考点整理(3)——练习题
  4. 房子装修有哪些注意事项要注意?
  5. 如何在电脑上浏览手机网页
  6. Matlab 统计数组中各数字(元素)出现的次数
  7. 频率分析(统计数组中元素个数)
  8. 关于在arcgis中导入excel,并在渔网中显示不同颜色方格
  9. Spring AOP 从入门到放弃
  10. STM32看门狗详解