1

我一直在努力使用我的 iOS 应用程序连接到 AWS DynamoDB。我对 DynamoDB 缺乏教程/文档感到沮丧(我想它还是相当新的)。但是我一直在尝试遵循亚马逊的用户偏好教程,我试图连接到数据库并读取或写入一些东西,但我遇到了一个异常。

AmazonCredentials *creds;
creds = [creds initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];
AmazonDynamoDBClient *ddb = [[AmazonDynamoDBClient alloc] initWithCredentials:creds];
DynamoDBGetItemRequest *request = [[DynamoDBGetItemRequest alloc]
    initWithTableName:@"Users" andKey:[[DynamoDBKey alloc] initWithHashKeyElement:
    [[DynamoDBAttributeValue alloc] initWithS:@"Chase"]]];
DynamoDBGetItemResponse *response = [ddb getItem:request]; //THROWING THE EXCEPTION HERE!
NSMutableDictionary *user = response.item;
NSLog(@"%@",user);

输出内容为:由于未捕获的异常“AmazonServiceException”而终止应用程序,原因:“”

我与教程所做的唯一不同的是我设置用户凭据的方式和引发异常的行,教程有:

DynamoDBCreateTableResponse *response = [[AmazonClientManager ddb] getItem:request];

我在任何地方都找不到任何 AmazonClientManager 类,但 AmazonDynamoDBClient 类似乎具有相同的方法,所以我假设它应该可以工作(这很可能是破坏我的代码的假设)。我不知道亚马逊是否仍然支持该类,因为我也无法在任何文档中找到它。

此外,在我被骂之前,我知道我不应该在应用程序中分发我自己的凭据。我稍后会改变这个。我现在只是想达到一个理智的状态。

4

1 回答 1

3

您需要更改这些行

AmazonCredentials *creds;
creds = [creds initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];

对此

AmazonCredentials *creds = [[AmazonCredentials alloc] initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];

此外,AmazonClientManager 不是 SDK 的一部分。它是示例应用程序的一部分,并返回 AmazonDynamoDBClient 的一个实例。它包含在示例项目中。

于 2012-11-17T02:30:14.050 回答