首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用带Swift的DynamoDB时,额外的尾随闭包传递了调用错误

在使用带Swift的DynamoDB时,额外的尾随闭包传递了调用错误
EN

Stack Overflow用户
提问于 2022-07-15 10:45:29
回答 1查看 100关注 0票数 0

我试图将DynamoDB与MacOS应用程序一起使用。问题是,即使在复制AWS文档(https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/examples-ddb-items.html)建议的函数时,我也会得到错误:

Extra trailing closure passed in call

示例功能:

代码语言:javascript
运行
复制
func getDynamoDbItem(dynamoDbClient: DynamoDbClient,
                     nameOfTable: String,
                     keyName: String,
                     keyVal: String) {
    let keyToGet = [keyName : DynamoDbClientTypes.AttributeValue.s(keyVal)]
    dynamoDbClient.getItem(input: GetItemInput(key: keyToGet, tableName: nameOfTable)) { result in
        switch(result) {
        case .success(let response):
            guard let numbersMap = response.item else {
                return
            }
            for returnedKey in numbersMap {
                print("\(returnedKey.key) : \(returnedKey.value)")
            }
        case .failure(let err):
            print(err)
        }
    }
}

我遗漏了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 11:43:29

提供的链接上的文档已经过时。新版本的依赖项已经在使用异步请求。

代码语言:javascript
运行
复制
func getDynamoDbItem(dynamoDbClient: DynamoDbClient,
                     nameOfTable: String,
                     keyName: String,
                     keyVal: String) async {
    do {
        
        let keyToGet = [keyName : DynamoDbClientTypes.AttributeValue.s(keyVal)]
        let result = try await dynamoDbClient.getItem(input: GetItemInput(key: keyToGet, tableName: nameOfTable))
        
        // use result
        
    } catch {
        // handle error
    }
    
}

编辑:

代码语言:javascript
运行
复制
private var dynamoDBResponseSubject = PassthroughSubject<GetItemOutputResponse, Error>()
var dynamoDBResponse: AnyPublisher<GetItemOutputResponse, Error> { dynamoDBResponseSubject.eraseToAnyPublisher() }


override func viewDidLoad() {
    super.viewDidLoad()
    Task {
        getDynamoDbItem(dynamoDbClient: dynamoDbClient, nameOfTable: "nameOfTable", keyName: "keyName", keyVal: "keyVal")
    }
}


func getDynamoDbItem(dynamoDbClient: DynamoDbClient,
                     nameOfTable: String,
                     keyName: String,
                     keyVal: String) {
        do {
            
            let keyToGet = [keyName : DynamoDbClientTypes.AttributeValue.s(keyVal)]
            let result = try await dynamoDbClient.getItem(input: GetItemInput(key: keyToGet, tableName: nameOfTable))
            dynamoDBResponseSubject.send(result)                
        } catch {
            // handle error
        }
}

也可以从getDynamoDbItem...方法中删除异步,并在任务中添加do { ... } catch { ... }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72992803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档