通过参数NSInteger返回值

时间:2011-08-04 11:17:24

标签: objective-c return-value return-type nsinteger

我需要从数据库中读取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 个答案:

答案 0 :(得分:2)

你必须将它们取消引用作为指针。这是一个例子(当你调用方法时,这会出现在代码中):

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指针。