【问题标题】:AWS iOS SDK simpleDB item countAWS iOS 开发工具包 simpleDB 项目计数
【发布时间】:2012-10-21 11:43:00
【问题描述】:

我刚开始使用 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

谁能指出我哪里出错了?我真的被困在这里了。

谢谢,塞巴斯蒂安

【问题讨论】:

  • 我建议将括号内的行分成单独的部分。我对价值呼吁持怀疑态度。我想我会先获取属性数组,然后获取键的对象:“Value”,确保它是 NSNumber,然后获取 intValue。
  • 但是如果你把它分解成这样的部分,那么它会更容易识别它在哪里分解。
  • 这些链接也描述了这个错误。请查看并可能解决您的问题 - stackoverflow.com/questions/7770872/… stackoverflow.com/questions/12434167/…
  • 我会试试然后回到这里:)

标签: objective-c ios amazon-web-services amazon-simpledb


【解决方案1】:

感谢 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];
        }
    }

这种方法有效。

【讨论】:

    猜你喜欢
    • 2015-07-02
    • 2015-08-08
    • 2017-09-06
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2012-05-24
    • 2015-04-07
    相关资源
    最近更新 更多