2012-10-31 6 views
0

방금 ​​Amazon Web Services SimpleDB를 사용하여 프로젝트 작업을 시작했습니다. 하나의 방법으로 나는 얼마나 많은 항목이 도메인에 이미 포함되어 있는지 알아 내려고 노력하고 있습니다. select query.AWS iOS SDK simpleDB 항목 수

코드는 다음과 같습니다 : 이것은 잘 작동

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

은 무엇 난 다음에하고 싶은, NSInteger itemCount에 값 2을 저장하는 것입니다. 여기 내가 투쟁하는 곳입니다. 내가 몇 가지를 시도, 내가 와서 멀리했다 :

NSInteger itemCount = [[[[[countResponse.items objectAtIndex:0]attributes]objectAtIndex:1]value]integerValue]; 

이있는 내 눈에 작동합니다. 그러나 그것은 오류를 throw합니다 :

Multiple methods named 'value' found with mismatched result, parameter type or attributes 

아무도 내가 잘못한 곳을 지적 할 수 있습니까? 나는 정말로 여기에서 붙어있다.

덕분에, geraldWilliam 난의 의견에 세바스찬

+0

나는 괄호로 묶은 줄을 개별 부분으로 나누는 것이 좋습니다. 나는 가치있는 소명에 의심 스럽다. 먼저 속성 배열을 가져온 다음 키의 개체를 가져옵니다. "Value"는 NSNumber인지 확인한 다음 intValue를 가져옵니다. – geraldWilliam

+0

하지만 그 부분으로 분해하면 고장이 어디서 있는지 쉽게 식별 할 수 있습니다. – geraldWilliam

+0

이 링크는이 오류에 대해서도 설명합니다. 보고 나서 문제를 해결할 수 있습니다. http://stackoverflow.com/questions/7770872/deep-copy-of-dictionaries-gives-analyze-error-in-xcode-4-2 http://stackoverflow.com/questions/12434167/cant-build-in-x-code-4-5-multiple-methods-named-error 때문에 –

답변

2

덕분에 그것을 알아 냈 :

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

이 방법을 사용할 수 있습니다.