2011-08-04 3 views
0

데이터베이스에서 3 개의 값을 읽고 메소드에서 리턴해야합니다. NSInteger 형식을 사용하여 값을 반환하는 방법을 이해하는 데 어려움을 겪고 있습니다. 이 코드는 다음과 같습니다.매개 변수를 통한 반환 값 NSInteger

NSString* GetVerbInfinitive(FMDatabase* mydb, NSString* myConjugation, NSInteger verbal_time, NSInteger verbal_person) 
{ 
    NSMutableString *ret = [[NSMutableString alloc] initWithString:@""]; 
    FMResultSet *rs = [mydb executeQuery:@"select verb_text, conjugation_verbal_time, conjugation_verbal_person from verbs where verb_conjugation = ?",[[myConjugation lowercaseString] precomposedStringWithCanonicalMapping]]; 
    if ([rs next]) 
    { 
     if (![rs columnIndexIsNull:0]) 
     { 
      [ret setString:[rs stringForColumn:@"verb_text"]]; 
      verbal_time = [rs intForColumn:@"conjugation_verbal_time"]; 
      verbal_person = [rs intForColumn:@"conjugation_verbal_person"]; 
     } 
     else 
     { 
      NSLog(@"GetVerbInfinitive: verb '%@' has no infinitive defined", myConjugation); 
     } 
    } 
    [rs close]; 
    return [ret autorelease]; 
} 

NSInteger 값은 호출하는 메소드로 돌아갈 때만 작동합니다. 나는이 NSInteger를 참조로 전달해야한다고 생각하지만 어떻게해야할지 모르겠다. 나는 이것을위한 타입 구조를 만들고 싶지 않다.

덕분에, 미구엘

답변

2

당신은 포인터로 역 참조해야합니다. 당신의 getverbinfinitivemethod에서 지금

NSInteger verbal_time, verbal_person; 
GetVerbInfinitive(....., &verbal_time, &verbal_person); 

:

NSString* GetVerbInfinitive(FMDatabase* mydb, NSString* myConjugation, NSInteger *verbal_time, NSInteger *verbal_person) 
{ 
... 
... 
*verbal_time = [rs intForColumn:@"conjugation_verbal_time"]; 
*verbal_person = [rs intForColumn:@"conjugation_verbal_person"]; 
... 
... 
} 

공지 서명 라인의 변화가 두 NSIntegers 포인터 만들기 다음은 그 예 (당신이 메소드를 호출 할 때이 코드에 간다)입니다 .