我需要从数据库中读取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,但我不知道如何。我不想为此创建一个类型结构。
谢谢, 米格尔
答案 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指针。