Ios 使用AWSDynamoDBScanExpression查找列表中具有键的所有对象

Ios 使用AWSDynamoDBScanExpression查找列表中具有键的所有对象,ios,objective-c,amazon-dynamodb,fetch,aws-sdk,Ios,Objective C,Amazon Dynamodb,Fetch,Aws Sdk,我有一个键列表[key1,key2,key3](在我的groups对象中作为NSArray),我想使用Objective-C查找DynamoDBgroups表中的所有值 这应该是一项简单的任务,但我遇到了一个错误,我对如何为AWSDynamoDBScanExpression对象生成filtereexpression感到有点困惑: AWSDynamoDBScanExpression *sc = [AWSDynamoDBScanExpression new]; sc.limit = @10; sc

我有一个键列表[key1,key2,key3](在我的groups对象中作为NSArray),我想使用Objective-C查找DynamoDB
groups
表中的所有值

这应该是一项简单的任务,但我遇到了一个错误,我对如何为
AWSDynamoDBScanExpression
对象生成
filtereexpression
感到有点困惑:

AWSDynamoDBScanExpression *sc = [AWSDynamoDBScanExpression new];

sc.limit = @10;
sc.filterExpression = @"GroupID IN :val";
sc.expressionAttributeValues = @{@":val":groups};

[[dynamoDBObjectMapper scan:[Group class] expression:sc] continueWithBlock:^id(AWSTask *task) {
              if (task.error) {
                  NSLog(@"The request failed. Error: [%@]", task.error);
              }
              if (task.exception) {
                  NSLog(@"The request failed. Exception: [%@]", task.exception);
              }
              if (task.result) {
                  AWSDynamoDBPaginatedOutput *output = task.result;
                  NSArray *items = output.items; 
             }
              return nil;
          }];
错误:

请求失败。错误:[Error Domain=com.amazonaws.awsdynamodberrodomain Code=0“(null)”UserInfo={{uuuuu type=com.amazon.coral.validate}ValidationException,message=Invalid FilterExpression:语法错误;标记:“:val”,靠近:“IN:val”}]

  • 如果你想找到所有的值,你应该做以下事情

    [[dynamoDBObjectMapper scan:[Group class] [AWSDynamoDBScanExpression new]] continueWithBlock:^id(AWSTask *task) {
        //do stuff with (AWSDynamoDBPaginatedOutput obj).items -> should contain object of class Group
        return nil;
    }];
    
  • 如果你想添加一些过滤器,你可以配置

    AWSDynamoDBScanExpression *scanExpression = [[AWSDynamoDBScanExpression alloc] init];
    
    scanExpression.expressionAttributeNames = @{
                                                @"#P": [NSString stringWithFormat:@"%@", <propertyNameToFileter>]
                                                };
    scanExpression.filterExpression = @"#P = :val";
    scanExpression.expressionAttributeValues = @{
                                                 @":val" : <filterCriteriaForProperty>
                                                 };
    
    AWSDynamoDBScanExpression*scanExpression=[[AWSDynamoDBScanExpression alloc]init];
    scanExpression.Expression属性名称=@{
    @“#P”:[NSString stringWithFormat:@”%@,]
    };
    scanExpression.filterExpression=@“#P=:val”;
    scanExpression.Expression属性值=@{
    @“:val”:
    };
    
  • 并调用相同的扫描方法

    在这两种情况下,u都将接收对象
    AWSDynamodPaginateDoutput

    打印任务描述->\u结果: AWSDynamodPaginateDoutput:0x7ff8faf56cc0