返回几个NSString

时间:2010-11-03 18:56:01

标签: objective-c pointers parameters nsstring

我想创建一个返回多个NSString的方法。我正在考虑这种方法,但我没有找到它的objc风格,而是C程序员风格 - 它使用指针(NSString *),因此(NSString **):

- (LONG) readOwnerInformationToNationalNumber:(NSString**) nationalNumber
                                   toName:(NSString**) name
                              toFirstName:(NSString**) firstName
                            toNationality:(NSString**) nationality
                           toPlaceOfBirth:(NSString**) placeOfBirth
                            toDateOfBirth:(NSString**) dateOfBirth
                                 toGender:(NSString**) gender
                        toStreetAndNumber:(NSString**) streetAndNumber
                                    toZip:(NSString**) zip
                           toMunicipality:(NSString**) municipality
                             toChipNumber:(NSString**) chipNumber
                  toCardValidityDateBegin:(NSString**) cardValidityDateBegin
                    toCardValidityDateEnd:(NSString**) cardValidityDateEnd
               toCardDeliveryMunicipality:(NSString**) cardDeliveryMunicipality

在方法体中,我返回这样的字符串:

*nationalNumber = [NSString stringWithString:@"11223344"];

实际上,这是我第一次返回多个NSString,并且总是将我的NSString作为返回参数返回。

这是一种丑陋,不健全或可行的做法吗?

此致 Apple 92

2 个答案:

答案 0 :(得分:4)

你所做的当然是可能的,但我发现它并不优雅。您需要返回的信息似乎属于一个,那么为什么不创建包含所有这些字段的自定义类并让您的方法返回该类的实例?

答案 1 :(得分:1)

如果您不想要自定义类,可能“Cocoa方式”将返回NSDictionary:

- (NSDictionary*) readOwnerInformationToNationalNumber
{
    // do stuff

    NSDictionary* returnedDictionary 
        = dictionaryWithObjectsAndKeys:
              nationalNumber,           @"nationalNumber",
              name,                     @"name",
              // etc ...
              cardDeliveryMunicipality, @"cardDeliveryMunicipality",
              nil];

    return returnedDictionary;
}

这在许多地方用于Coca,例如NSURL -resourceValuesForKeys:error