SwiftUI监听CoreData托管对象属性变化以及发生EXC_BAD_ACCESS崩溃的处理

在这里插入图片描述



功能需求

SwiftUI在与CoreData共同协作时,我们往往希望在托管对象的自定义属性发生变化时,UI能够得到通知。

比如托管类Foo有一个isSealed属性,我们如何仅在该属性(而不是任何其它属性)发生变化时,界面得到通知呢?

有一个好消息和一个坏消息:

  • 好消息是,所有NSManagedObject都遵守ObservableObject协议,这意味着我们可以在SwiftUI中像其它可观察对象那样使用它们。

  • 坏消息是,NSManagedObject的自定义属性都没有添加@Published修饰符,所以你无法直接将其传入视图的.onReceive修改器。

更要命的是,在低版本的iOS(在13.5.1里正常,在13.3里崩溃)里,不恰当的观察托管对象属性会造成App立即崩溃,没有任何提示的那种:

大熊猫侯佩 CSDN认证博客专家 Swift Objective-C Xcode
非自由程序员,CSDN博客认证专家。
CSDN汇编板块版主, CSDN其他开发语言大版版主。

对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值