ios - DispatchQueue 在 Swift 中不起作用的问题

标签 ios swift xcode combine

我被这个问题困扰并尝试了各种方法但没有成功。下面的代码几天前就可以工作。但是,它现在不起作用。我尝试使用 Xcode 11.1 版本,效果非常好。有人可以告诉我原因或解决方法吗?

问题是每当我输入一个键时,它不会使用调度队列触发相应的方法。

当前 Swift 版本:11.3

Code snippet:

 init(
    weatherFetcher: WeatherFetchable,
    scheduler: DispatchQueue = DispatchQueue(label: "WeatherViewModel")
  ) {
    self.weatherFetcher = weatherFetcher
    _ = $city
      .dropFirst(1)
      .debounce(for: .seconds(0.5), scheduler: DispatchQueue.global())
      .sink(receiveValue: fetchWeather(forCity:))
  }

引用代码: https://www.raywenderlich.com/4161005-mvvm-with-combine-tutorial-for-ios

最佳答案

那个教程有一个问题,就是链$city.…创建的订阅者没有保存在任何地方,因此它会立即被取消并释放。将其保存在属性中或将其添加到 Set<AnyCancellable>属性(property)使用 .store(in: &mySubscribers) .

关于ios - DispatchQueue 在 Swift 中不起作用的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59442379/

相关文章:

objective-c - NSError:方法中传递错误

swift - 如果 Swift 协议(protocol)是用类型约束定义的,为什么不能直接访问该类型的属性/方法?

ios - 从函数返回数据 (Swift)

ios - Xcode 10 - iPhone X 黑条

ios - Swift 1.1 的新错误

ios - 应用程序进入后台时清空 NSCache

ios - 通过 Swift 中一个键的多个值过滤 Firebase 结果

objective-c - 为什么使用自定义时无法定义 IBOutlet "prototype tableviewcells"

swift - 如何抽象不同的字节缓冲区类型? (NSData, [UInt8], …)

ios - Xcode std::__1::basic_ostream undefined symbol