我正在嘗試重新發布一個用 Objective-C 撰寫的舊 iPhone 應用程式。決定使用 DynamoDB,但一直在努力使用 AWSDynamoDBQueryInput 進行查詢。
問題:需要從全域二級索引中按排序鍵的降序檢索前 N 條記錄。使用散列鍵 (gameTitle) 和排序鍵 (totalScore) 定義的全域二級索引。我一直在關注 AWS 檔案,并且可以讓它在 CLI 中作業,但無法通過 Xcode/Objective-C 做同樣的事情。我收到“發送到班級的無法識別的選擇器”例外。
AWSDynamoDBQueryInput *AWSquery = [AWSDynamoDBQueryInput new];
AWSquery.tableName = AWSTableName;
AWSquery.indexName = AWSIndex;
AWSquery.scanIndexForward = false;
AWSquery.limit = @6;
AWSquery.keyConditionExpression = @"gameTitle = :gameTitle";
AWSquery.expressionAttributeValues = @{@":gameTitle":@"sampleGame"};
@try {
[[dynamoDB query:AWSquery] continueWithBlock:^id(AWSTask *task){
return @"task.result";
}];
}
@catch (NSException *exception) {
NSLog(@"%@ ", exception.name);
NSLog(@"Reason: %@ ", exception.reason);
}
我懷疑問題出在“keyConditionExpression”上,但非常感謝任何指導。謝謝!
uj5u.com熱心網友回復:
終于讓它作業了!AWSDynamoDBAttributeValue在expressionAttributeValues. _ 下面的作業代碼。
AWSDynamoDBQueryInput *AWSquery = [AWSDynamoDBQueryInput new];
AWSquery.tableName = AWSTableName;
AWSquery.indexName = AWSIndex;
AWSquery.scanIndexForward = @NO;
AWSquery.limit = @6;
AWSDynamoDBAttributeValue *attValue = [AWSDynamoDBAttributeValue new];
attValue.S = @"sampleGame";
AWSquery.keyConditionExpression = @"gameTitle=:gameTitle";
AWSquery.expressionAttributeValues = @{@":gameTitle":attValue};
@try {
[[dynamoDB query:AWSquery] continueWithBlock:^id(AWSTask *task){
return @"task.result";
}];
}
@catch (NSException *exception) {
NSLog(@"%@ ", exception.name);
NSLog(@"Reason: %@ ", exception.reason);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/462963.html
標籤:目标-c 亚马逊-dynamodb dynamodb 查询
上一篇:Druid SQL和Security在美團點評的實踐
下一篇:MySQL 存盤程序和函式
