如何解析来自联合发布者的结果



我是联合收割机领域的新手,已经编写了一个查询,可以正确返回所需的结果。它是多步骤的,但基本上是通过网络进行api调用,解析返回的json并创建我需要的记录数组。

let results2: Publishers.Map<Publishers.ReceiveOn<Publishers.Decode<Publishers.Map<URLSession.DataTaskPublisher, JSONDecoder.Input>, Wrapper<Question>, JSONDecoder>, DispatchQueue>, [Question]>

我试图重写我的一部分代码,并意识到我仍然没有完全掌握解析结果的来龙去脉。如果查看results2的数据类型,您将看到最后一部分包含一个Question数组。如何将此数组分配给变量,如:

let finalAnswer: [Question] = turnThisIntoAnArray(results2)

如果可能的话,我更喜欢这个一般问题的一般答案,而不是提供重新创建这个特定的发布者字符串所需的所有代码。

感谢

在这个工作示例中,请注意下面的变量results

func runQuery() {
let env = BespokeEnvironment(mainQueue: .main, networkQuery: NetworkQuestionRequestor())
results = env.networkQuery.reviewedQuestionsQuery(pageCount: 1)
.sink(
receiveCompletion: { print($0)},
receiveValue: { values in
returnValues.append(contentsOf: values)
})
}

我最初有:

let results =
...

而且没有得到任何记录。事实证明,这个方法在出版商完成之前就已经完成并返回了。

在非工作代码中,可取消内容的保存时间不够长,发布者无法完成。因此,我将results移到父视图中,并使其成为@State变量。现在一切正常。

@State var results: AnyCancellable? = nil

相关内容

  • 没有找到相关文章

最新更新