小编Nic*_*gen的帖子

为计算属性添加@Published 行为

我正在尝试制作一个ObservableObject具有包装UserDefaults变量的属性。

为了符合ObservableObject,我需要用 包装属性@Published。不幸的是,我不能将它应用于计算属性,因为我用于UserDefaults值。

我怎么能让它工作?我必须做什么才能实现@Published行为?

swift swiftui combine property-wrapper

5
推荐指数
3
解决办法
3633
查看次数

Swift Concurrency AsyncStream 中的类型擦除

在试验 Swift 的并发性时,我希望有一个干净的 API 来公开给定元素类型的异步序列及其节流版本:

  var intStream: AsyncStream<Int> {
    AsyncStream<Int>(Int.self, bufferingPolicy: .bufferingNewest(5)) { continuation in
      Task.detached {
        for _ in 0..<100 {
          try await Task.sleep(nanoseconds: 1 * 1_000_000_000)
          continuation.yield(Int.random(in: 1...10))
        }
        continuation.finish()
      }
    }
  }
  
  var throttledIntStream: AsyncStream<Int> {
    intStream.throttle(for: .seconds(2))
  }
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为节流阀返回其自己的类型:错误: Cannot convert return expression of type 'AsyncThrottleSequence<AsyncStream<Int>, ContinuousClock, Int>' to return type 'AsyncStream<Int>'

为了获得类型擦除我可以做

var throttledIntStream: some AsyncSequence {
  intStream.debounce(for: Duration.seconds(2))
}
Run Code Online (Sandbox Code Playgroud)

但随后我也丢失了我想保留的元素类型信息。

有什么建议如何最好地解决这个问题?

编辑:这指向我想要的解决方案,但我想我需要等待https://forums.swift.org/t/anyasyncsequence/50828/2

swift swift-concurrency

5
推荐指数
1
解决办法
928
查看次数

如何在 iOS 上获取相机校准数据?又名 AVCameraCalibrationData

据我了解,AVCameraCalibrationData 只能通过 AVCaptureDepthDataOutput 使用。那是对的吗?

另一方面,AVCaptureDepthDataOutput 只能通过 iPhone X 前摄像头或 iPhone Plus 后摄像头访问,还是我弄错了?

我想要做的是获取 AVCaptureVideoDataOutput SampleBuffer 的 FOV。特别是,它应该匹配所选的预设(全高清、照片等)。

computer-vision ios avkit ios11 arkit

3
推荐指数
3
解决办法
5501
查看次数

获取 Swift 中键路径的编码密钥

我拥有的:具有不同属性的可编码结构。

我想要的:一个函数,当属性编码为 Json 时,我可以在其中获取属性的确切名称。我认为最有前途的方法是使用 Keypath,但我不知道如何以及是否可能。谢谢!

swift codable swift-keypath

1
推荐指数
1
解决办法
1451
查看次数