1

iOSアプリでAWSDynamoDBに接続するのに苦労しています。DynamoDBにチュートリアル/ドキュメントがないことに不満を感じています(まだかなり新しいと思います)。しかし、私はAmazonのユーザー設定チュートリアルに従おうとしています。データベースに接続して何かを読んだり書いたりしようとしていますが、例外がスローされます。

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クラスは同じメソッドを持っているように見えるので、それが機能するはずだと思います(これは、私のコードを壊しているという仮定である可能性があります)。どのドキュメントにも見つからないので、Amazonがまだそのクラスをサポートしているかどうかはわかりません。

また、怒鳴られる前に、アプリで自分のクレデンシャルを配布するべきではないことを知っています。これは後で変更します。今のところ、正気の状態にしようとしています。

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 に答える