Возвращаемое значение через параметр NSInteger - PullRequest
0 голосов
/ 04 августа 2011

Мне нужно прочитать 3 значения из базы данных и вернуть их в метод.У меня есть проблемы, чтобы понять, как вернуть значения, используя типы 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 по ссылке, но я не знаю как.Я не хочу создавать структуру типов для этого.

Спасибо, Мигель

1 Ответ

2 голосов
/ 04 августа 2011

Вы должны разыменовать их как указатели. Вот пример (это происходит в коде, когда вы вызываете метод):

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

Теперь в вашем методе getverbinfinitive:

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.

...