我有一个计时器方法,每当创建新示例时都会调用它。我希望每个股票代码都应该存储在字典中,关于每个示例,如**[test1:1,test2:1],[test1:2,test2:2] ...**...等等。已尝试以下选项,但无法发送任何值。目前.scan只能发送整数
var subscriptions = Set()
var dict = NSMutableDictionary()
func multiplecall(name: String) {
Timer.publish(every: 1, on: .main, in: .common)
.autoconnect()
.scan(1) { value, _ in value + 1 }
.sink(receiveValue: fetchValues)
.store(in: &subscriptions)
}
func fetchValues(ticker: Int){
print(ticker)
}
**Expecting something like this**
func fetchValues(testName: String, ticker: Int){
dict[testName] = ticker
}
multiplecall(name: "test1")
multiplecall(name: "test2")
1条答案
按热度按时间ozxc1zmp1#
你不需要在这里做任何特别的事情。不要将
fetchValues
传递给sink
,而是传递一个闭包:或者简单地说:
下面是一个完整的代码,它在发布前5个值后打印字典:
输出:
请注意,第一行是从第一个发布者完成时生成的。此时
test2
尚未完成。这就是为什么它是"test2": 5
。