热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

不符合协议BindableObject-Xcode11Beta4

如何解决《不符合协议BindableObject-Xcode11Beta4》经验,为你挑选了1个好方法。



1> kontiki..:

Beta 4 发行说明说:

BindableObject协议的要求现在是willChange而不是didChange,并且应该在对象更改之前而不是更改之后发送。此更改可以改进更改通知的合并。(51580731)

您需要将代码更改为:

class UserSettings: BindableObject {

    let willChange = PassthroughSubject()

    var score: Int = 0 {
        willSet {
            willChange.send()
        }
    }
}

在Beta 5中,他们再次更改了它。这次他们一起弃用了BindableObject!

BindableObject替换为Combine框架中的ObservableObject协议。(50800624)

您可以通过定义在对象更改之前发出的objectWillChange发布者来手动遵守ObservableObject。但是,默认情况下,ObservableObject自动合成objectWillChange并在任何@Published属性更改之前发出。

@ObjectBinding替换为@ObservedObject。

class UserSettings: ObservableObject {
    @Published var score: Int = 0
}

struct MyView: View {
    @ObservedObject var settings: UserSettings
}


—我想知道调用此方法后必须更改多长时间?而且,如果您在调用`willChange`之后从未更改过值,会发生什么?
推荐阅读
author-avatar
ke天天_809
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有