2012-11-17 39 views
1

我一直在努力通過iOS應用程序連接到AWS DynamoDB。我對DynamoDB缺乏教程/文檔感到沮喪(我想這還是相當新的)。但我一直試圖按照Amazon's User Preference Tutorial我試圖連接到數據庫並閱讀或寫東西,但我得到一個異常拋出。iOS AWS 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類似乎有同樣的方法,所以我假設它應該工作(這個可能很可能是破壞我的代碼的假設)。我不知道亞馬遜是否仍然支持該類,因爲我無法在任何文檔中找到它。

另外,在我大吼大叫之前,我知道我不應該在應用程序中發放我自己的憑據。我稍後會改變這一點。我現在只想達到理智狀態。

回答

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的一個實例。它包含在示例項目中。

+0

它工作得很好。那麼爲什麼不聲明指針然後初始化它的工作? –

+1

你也可以在兩行中做到這一點:'AmazonCredentials * creds; creds = [[AmazonCredentials alloc] initWithAccessKey:MY_ACCESS_KEY withSecretKey:MY_SECRET_KEY];',但仍需要調用'alloc',否則憑證對象將不會分配到內存中。 –

+0

哦,在這個問題得到解答的時候,我在iOS開發世界裏有多年輕。 –