我从亚马逊网站下载了用户首选项示例(适用于Xcode)。我按要求在代码中插入了我的密钥。然后运行应用程序。它应该创建一个名为TestUserPrefence的表。它似乎在应用程序中正确执行此操作,因为应用程序在创建表并插入数据后工作正常;但是,当您转到用于dynamoDB的AWS控制台时,尚未创建该表。此外,当我退出应用程序并再次运行它时,表格已经消失,我必须重新创建它。
那么如何在目标c中添加表格并且aws控制台可以看到它?
以下是应该创建表的代码(从示例中复制)。
#define TEST_TABLE_NAME @"TestUserPreference"
#define TEST_TABLE_HASH_KEY @"userNo"
+(void)createTable
{
DynamoDBCreateTableRequest *createTableRequest = [[DynamoDBCreateTableRequest new] autorelease];
DynamoDBProvisionedThroughput *provisionedThroughput = [[DynamoDBProvisionedThroughput new] autorelease];
provisionedThroughput.readCapacityUnits = [NSNumber numberWithInt:10];
provisionedThroughput.writeCapacityUnits = [NSNumber numberWithInt:5];
DynamoDBKeySchemaElement *keySchemaElement = [[[DynamoDBKeySchemaElement alloc] initWithAttributeName:TEST_TABLE_HASH_KEY
andKeyType:@"HASH"] autorelease];
DynamoDBAttributeDefinition *attributeDefinition = [[DynamoDBAttributeDefinition new] autorelease];
attributeDefinition.attributeName = TEST_TABLE_HASH_KEY;
attributeDefinition.attributeType = @"N";
createTableRequest.tableName = TEST_TABLE_NAME;
createTableRequest.provisionedThroughput = provisionedThroughput;
[createTableRequest addKeySchema:keySchemaElement];
[createTableRequest addAttributeDefinition:attributeDefinition];
DynamoDBCreateTableResponse *response = [[AmazonClientManager ddb] createTable:createTableRequest];
if(response.error != nil)
{
[AmazonClientManager wipeCredentialsOnAuthError:response.error];
NSLog(@"Error: %@", response.error);
}
}
更多信息:我发现桌子是在不同的服务器上创建的(北弗吉尼亚出于某种原因),而不是我在控制台上看到的那个(默认为俄勒冈州)。显然,您必须在应用程序将要使用的服务器上的控制台中创建表;但是,似乎没有办法设置它。
答案 0 :(得分:1)
我是AWS SDK for iOS的维护者之一。对不起,我很抱歉。
在此示例的最近更新中,我们失去了此示例中默认为us-west-2(Oregon)区域的更改。这由创建时AmazonDynamoDBClient
上设置的端点控制。您只需修改AmazonClientManager.m中的代码即可添加以下内容:
ddb.endpoint = [AmazonEndpoints ddbEndpoint:US_WEST_2];
这将创建/使用us-west-2区域中的表。
答案 1 :(得分:-1)
我找到了解决方案:
Region useast1 = Region.getRegion(Regions.US_EAST_1);
ddb.setRegion(useast1 );