0

アマゾンウェブサービスSimpleDBを使用してプロジェクトに取り組み始めたところです。1つの方法では、を使用して、ドメインにすでに含まれているアイテムの数を把握しようとしています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

誰かが私がどこで間違っていたのか私に指摘できますか?私は本当にここで立ち往生しています。

ありがとう、セバスチャン

4

1 に答える 1

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

このアプローチは機能します。

于 2012-11-01T14:17:44.930 に答える