我试图将DynamoDB与MacOS应用程序一起使用。问题是,即使在复制AWS文档(https://docs.aws.amazon.com/sdk-for-swift/latest/developer-guide/examples-ddb-items.html)建议的函数时,我也会得到错误:
Extra trailing closure passed in call
示例功能:
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)
}
}
}
我遗漏了什么吗?
发布于 2022-07-15 11:43:29
提供的链接上的文档已经过时。新版本的依赖项已经在使用异步请求。
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
}
}
编辑:
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 { ... }
块
https://stackoverflow.com/questions/72992803
复制相似问题