DynamoDB 使用 iOS 移动 SDK 检索项目

DynamoDB Retrieve an Item using iOS mobile SDK

我开始使用 iOS 的 AWS 移动 SDK,但无法正确加载项目。我已经很好地映射了实体,因为我可以将项目保存到 DynamoDB table.

我的问题是加载操作后无法获取信息。我正在关注 this AWS docs,它表示结果将映射到对象。这是我的代码:

AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];

DDBUser *user = [DDBUser new];
user.u_id = credentialsProvider.identityId;
[[dynamoDBObjectMapper load:[DDBUser class] hashKey:user.u_id rangeKey:nil] continueWithBlock:^id(BFTask *task) {
    if (task.error) {
        NSLog(@"The request failed. Error: [%@]", task.error);
        return nil;
    }
    if (task.exception) {
        NSLog(@"The request failed. Exception: [%@]", task.exception);
        return nil;
    }
    NSLog(@"name: %@", [(DDBUser *)task.result name]);
    NSLog(@"name: %@", [user name]);
    return nil;
}];

此处,第一个日志的名称正确,但第二个为空。

非常感谢!

这是预期的行为。 task.result 包含结果,而不是 user。您可能希望将代码片段重写为如下内容:

AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];

[[dynamoDBObjectMapper load:[DDBUser class] hashKey:credentialsProvider.identityId rangeKey:nil] continueWithBlock:^id(BFTask *task) {
    if (task.error) {
        NSLog(@"The request failed. Error: [%@]", task.error);
        return nil;
    }
    if (task.exception) {
        NSLog(@"The request failed. Exception: [%@]", task.exception);
        return nil;
    }
    if (task.result) {
        DDBUser *user = task.result;
        NSLog(@"name: %@", [user name]);
    }
    return nil;
}];