0

我需要从数据库中读取 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,但我不知道如何。我不想为此创建类型结构。

谢谢,米格尔

4

1 回答 1

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

于 2011-08-04T11:23:27.827 回答