gpt4 book ai didi

swift - 如何在 swift 中使用 react 性 cocoa 组合三个信号?

转载 作者:搜寻专家 更新时间:2023-11-01 06:13:47 24 4
gpt4 key购买 nike

我看过文档,好像“and”不适合组合信号。然后,我查看了“combineLatest”,但它预计每个信号至少返回一个值。我的用例是我有三个独立的信号,它们之间没有关系。我只想将它们组合在一起并在一个地方观察并在闭包内进行相应处理。

例如:

Signal1<Int, NoError>
Signal2<String, NoError>
Signal3<SomeType, NoError>

Combine3Signals<(Int, String, SomeType), NoError>.observeValues {...//handle accordingly based on type...}

最佳答案

您可以为此使用Signal.merge,但首先您必须让编译器相信您确实想要合并这些不同的类型

let p1 = MutableProperty<Int>(1)
let p2 = MutableProperty<Bool>(false)
let p3 = MutableProperty<String>("")

let s1: Signal<Any, NoError> = p1.signal.map { $0 }
let s2: Signal<Any, NoError> = p2.signal.map { $0 }
let s3: Signal<Any, NoError> = p3.signal.map { $0 }

let merged = Signal<Any, NoError>.merge(s1, s2, s3)
merged.observeValues { print($0) }


p1.value = 2
p1.value = 3
p3.value = "Hello"
p2.value = true

没有map,编译器会报错

error: cannot convert value of type 'Signal<Int, NoError>' to specified type 'Signal<Any, NoError>'

关于swift - 如何在 swift 中使用 react 性 cocoa 组合三个信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49815243/

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