![](/img/trans.png)
[英]SwiftUI - Conditional based on ObservedObject doesn't work in subsequent Views
[英]SwiftUI: Why doesn't ObservedObject work in AppDelegate?
我已經嘗試過ObservableObject 文檔中的示例。
class Contact: ObservableObject {
@Published var name: String = "me"
@Published var age: Int = 7
}
當我使用代碼制作 Swift 游樂場時:
let c = Contact()
c.objectWillChange.sink { print("This prints") }
c.age += 1
objectWillChange
觸發並打印行。
到目前為止,一切都很好。
我現在在 SwiftUI 中創建一個視圖:
struct ContentView: View {
@ObservedObject var contact = Contact
...
我在 AppDelegate 中創建此視圖,然后執行以下操作:
contentView.contact.objectWillChange.sink { print("This doesn't print.") }
我已將聯系人連接到各種控件,更改任何字段都會更新所有控件。 執行onReceive(contact.objectWillChange)
也可以。 但沒有在 AppDelegate 中連接到它。 我嘗試記錄deinit()
以確保我們談論的是相同的 object。 我試過使用ImmediateScheduler
。 沒有骰子。 為什么這不起作用?
當您使用.sink
創建訂閱時,您必須保存返回的AnyCancellable
object
let cancellable = publisher.sink { ... }
如果將其分配給變量,請確保它不是短暫的。 一旦可取消的 object 被解除分配,訂閱也將被取消。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.