我从亚马逊网站下载了用户偏好示例(用于 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);
}
}
更多信息:我发现该表是在另一台服务器(由于某种原因北弗吉尼亚)上创建的,而不是我在控制台上看到的(默认为俄勒冈)。显然,您必须在应用程序将要使用的服务器上的控制台中创建表;但是,似乎没有办法设置它。