我刚进入Combine岁,但由于某种原因,我无法进入passthrough subjects岁.即使我有来自多个不同来源的复制粘贴示例,它们也不会打印任何内容.我试过PublishersCurrentValueSubjects,效果很好,但用了PassThroughSubjects;不.下面是我try 过的一个例子:

let mySubject = PassthroughSubject<String, Error>()

mySubject.sink(receiveCompletion: { completion in
        print("-- completion", completion)
    }, receiveValue: { value in
        print("-- value", value)
}).cancel()

mySubject.send("one")
mySubject.send("two")
mySubject.send("three")

这是在viewDidLoad中运行的.

正如我所说,我已经成功地try 了PublishersCurrentValueSubjects:

["one", "two", "three"].publisher
    .sink(receiveValue: { v in
        print("-- hello", v)
}).cancel()

let subject = CurrentValueSubject<String, Error>("Initial Value")

subject.send("Hello")

subject.sink(receiveCompletion: { c in
    print("-- completion", c)
}, receiveValue: { v in
    print("-- value", v)
}).cancel()

推荐答案

您看到的订阅未使用的警告是一个存储sink返回的令牌的提示,如下所示:

let mySubject = PassthroughSubject<String, Error>()

let cancellable = mySubject
    .sink(
        receiveCompletion: { completion in
            print("-- completion", completion)
        },
        receiveValue: { value in
            print("-- value", value)
        }
    )

然后当你打电话时:

mySubject.send("one")
mySubject.send("two")
mySubject.send("three")

您将看到以下内容打印出来:

-- value one
-- value two
-- value three

如果您对接收更新不再感兴趣,可以取消订阅:

cancellable.cancel()

或者您可以发送一份填表:

mySubject.send(completion: .finished)

and then 您将看到以下内容打印出来:

-- completion finished

Ios相关问答推荐

无法在fastlane和github操作中从react-native 应用程序构建ios

Fastlane,iOS Provisioning Profile推送通知权限(通过示例)&

SWIFT图表轴订购问题

JSON响应中的键有时为Int,有时为字符串

带菜单的选取器不适用于Int32,但适用于Int

Swift locationManager.requestWhenInUseAuthorization() 不提示用户

.frame() 修饰符的位置如何影响视图?

在左侧显示多行值时会出现 SwiftUI 错误,这会 destruct 堆栈中右侧的对齐方式

占位符文本未显示在 TextEditor 上

如何在 Mac OS Ventura 中使用 Xcode 13

在标签中显示多个计数器但在同一屏幕(Swift,IOS)

视图之间的 SwiftUI 过渡,没有过渡

UIViewRepresentable - MKMapView 没有得到更新

UIViewControllerRepresentable 在 Xcode 14 iOS 16 上崩溃

Flutter:无法构建 iOS 应用程序ARCHIVE FAILED,为设备归档时遇到错误

'+entityForName: nil 不是合法的 NSManagedObjectContext 参数 - 核心数据

SwiftUI - 列表行中的多个按钮

iOS SDK - 以编程方式生成 PDF 文件

为什么 Xcode 4 不创建任何产品?

UISegmentedControl 以编程方式更改段数