在放大代码段的范围内找不到类型“AnyCancellable”
Posted
技术标签:
【中文标题】在放大代码段的范围内找不到类型“AnyCancellable”【英文标题】:Cannot find type 'AnyCancellable' in scope from amplify code snippit 【发布时间】:2021-06-11 00:45:12 【问题描述】:import Foundation
import SwiftUI
import Amplify
class MovesAPI: ObservableObject
@Published var todoLIst: [MoveType?] = [nil]
init()
listTodos()
func listTodos() -> AnyCancellable //cannot find type 'AnyCancellable' in scope
let moveType = MoveType.keys
let sink = Amplify.API.query(request: .paginatedList(MoveType.self)) //Generic parameter 'R' could not be inferred //Type 'GraphQLRequest<_>' has no member 'paginatedList'
.resultPublisher
.sink
if case let .failure(error) = $0
print("Got failed event with error \(error)")
receiveValue: result in
switch result
case .success(let todos):
print("Successfully retrieved list of todos: \(todos)")
case .failure(let error):
print("Got failed result with \(error.errorDescription)")
return sink
最终我的目标是从 amplify GraphQL API 获取所有 MoveType 类型的模型。 这是直接粘贴到我的项目中的代码 sn-p,我收到了这些类型错误。知道为什么吗? 从放大、文档 (https://docs.amplify.aws/lib/graphqlapi/query-data/q/platform/ios#query-by-id) 中,我所做的只是更改模型名称以匹配我的后端并删除查询参数。
【问题讨论】:
在顶部添加“导入组合”。它是组合框架的一部分。 【参考方案1】:好的,它可以工作,只是需要更简单,我使用组合模式关闭了
import Foundation
import SwiftUI
import Amplify
class MovesAPI: ObservableObject
@Published var todoLIst: [MoveType?] = [nil]
init()
func listTodos()
print("listing todos")
Amplify.API.query(request: .list(MoveType.self)) event in
switch event
case .success(let result):
switch result
case .success(let todos):
print("Successfully retrieved list of todos: \(todos)")
case .failure(let error):
print("Got failed result with \(error.errorDescription)")
case .failure(let error):
print("Got failed event with error \(error)")
不过,如果有人知道为什么 amplify docs 中的代码 sn-ps 不起作用,我很想知道。
【讨论】:
【参考方案2】:我认为你需要:
import Combine
【讨论】:
【参考方案3】:当我使用 Cocoapods 下载 Amplify 时,我遇到了来自 amplify 文档的 paginatedList 代码 sn-p 无法正常工作的问题。当我按照说明从 Swift 包管理器 (SPM) 下载 Amplify 而不是在 Amplify iOS Github 时,paginatedList 无法正常工作的问题就解决了。将 Combine 框架导入我的 Xcode 项目并没有解决 paginatedList 问题。
【讨论】:
我尝试使用 SPM 安装,但仍然得到//Generic parameter 'R' could not be inferred //Type 'GraphQLRequest<_>' has no member 'paginatedList'
您是否尝试过重新启动您的 Xcode 项目工作区?
是的,但还是一样以上是关于在放大代码段的范围内找不到类型“AnyCancellable”的主要内容,如果未能解决你的问题,请参考以下文章