我刚开始使用Amazon Web Services SimpleDB开展项目。
在一种方法中,我试图通过使用select query
来确定域已经包含的项目数。
代码如下所示:
AmazonSimpleDBClient *dbClienet = [[AmazonSimpleDBClient alloc]initWithAccessKey:_secret withSecretKey:_hiddenSecret];
NSString *countRequestString = [NSString stringWithFormat:@"select count(*) from %@",domain];
SimpleDBSelectRequest *countRequest = [[SimpleDBSelectRequest alloc]initWithSelectExpression:countRequestString];
SimpleDBSelectResponse *countResponse = [dbClienet select:countRequest];
这很好用。例如:连接工作,当我记录它时,响应似乎也是正确的:
{Items: (
"{Name: Domain,AlternateNameEncoding: (null),Attributes: (\n \
"{Name: Count,AlternateNameEncoding: (null),Value: 2,AlternateValueEncoding: (null),<SimpleDBAttribute: 0x756f730>}\"\n),<SimpleDBItem: 0x7529d00>}"),NextToken: (null),{BoxUsage: 0.000023,{requestId: b683ed01-9e5f-9041-1ace-cbb0fdfaa799}}}
我接下来要做的是将值2
保存到NSInteger itemCount
。这是我挣扎的地方。
我尝试了几件事,我来的最远的是:
NSInteger itemCount = [[[[[countResponse.items objectAtIndex:0]attributes]objectAtIndex:1]value]integerValue];
这应该适用于我的眼睛。但它引发了错误:
Multiple methods named 'value' found with mismatched result, parameter type or attributes
有人能指出我哪里出错了吗?我真的被困在这里了。
谢谢,塞巴斯蒂安
答案 0 :(得分:2)
感谢geraldWilliam的评论我明白了:
NSString *countRequestString = [NSString stringWithFormat:@"select count(*) from %@",domain];
SimpleDBSelectRequest *countRequest = [[SimpleDBSelectRequest alloc]initWithSelectExpression:countRequestString];
SimpleDBSelectResponse *countResponse = [dbClienet select:countRequest];
NSArray* attributes = [[countResponse.items objectAtIndex:0]attributes];
for (SimpleDBAttribute*attr in attributes) {
if ([attr.name isEqualToString:@"Count"]) {
itemCount = [attr.value integerValue];
}
}
这种方法有效。