gpt4 book ai didi

protocols - 我正在尝试在协议(protocol)扩展中使用 "objectWillChange.send()"但它不起作用,知道为什么吗?

转载 作者:行者123 更新时间:2023-12-03 20:26:55 24 4
gpt4 key购买 nike

我有一个显示玩家列表的 SwiftUI 导航 View 。我设计的 View 模型协议(protocol)如下。


protocol PlayerListStateProviding: ObservableObject {
var players: [PlayerModel] { get set }
}

protocol PlayerListDeleting {
var moc: NSManagedObjectContext { get set }
func delete(at indexSet: IndexSet)
}

extension PlayerListDeleting where Self: PlayerListStateProviding {
func delete(at indexSet: IndexSet) {
moc.delete(players.remove(at: indexSet.first!))
objectWillChange.send() // this doesn't compile with the following error "Value of type 'Self.ObjectWillChangePublisher' has no member 'send'"
}
}

我不确定这个错误是什么以及如何避免它。但是,当我删除扩展并创建具体类时,我可以毫无问题地发送信号。

最佳答案

要在协议(protocol)中使用默认的可观察对象发布者,您应该将其限制为相应的类型(因为它在 ObservableObject 的扩展中),如

extension PlayerListDeleting where Self: PlayerListStateProviding,  
Self.ObjectWillChangePublisher == ObservableObjectPublisher {
func delete(at indexSet: IndexSet) {
moc.delete(players.remove(at: indexSet.first!))
objectWillChange.send()
}
}
backup

关于protocols - 我正在尝试在协议(protocol)扩展中使用 "objectWillChange.send()"但它不起作用,知道为什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59589406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com