我正在尝试制作一个ObservableObject具有包装UserDefaults变量的属性。
为了符合ObservableObject,我需要用 包装属性@Published。不幸的是,我不能将它应用于计算属性,因为我用于UserDefaults值。
我怎么能让它工作?我必须做什么才能实现@Published行为?
在试验 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
据我了解,AVCameraCalibrationData 只能通过 AVCaptureDepthDataOutput 使用。那是对的吗?
另一方面,AVCaptureDepthDataOutput 只能通过 iPhone X 前摄像头或 iPhone Plus 后摄像头访问,还是我弄错了?
我想要做的是获取 AVCaptureVideoDataOutput SampleBuffer 的 FOV。特别是,它应该匹配所选的预设(全高清、照片等)。
我拥有的:具有不同属性的可编码结构。
我想要的:一个函数,当属性编码为 Json 时,我可以在其中获取属性的确切名称。我认为最有前途的方法是使用 Keypath,但我不知道如何以及是否可能。谢谢!