2010-11-03 56 views
0

我想創建一個返回幾個NSString的方法。我想這種方法,但我不覺得它在objc的風格,而C程序員的風格 - 它使用指針(的NSString *),這樣(的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作爲返回參數。

這是一種醜陋的,不健壯的或可行的方式嗎?

問候, 蘋果92

回答

4

你要做的當然是可能的,但我不覺得它很優雅。您需要返回的信息似乎屬於一個整體,爲什麼不創建一個包含所有這些字段的自定義類,並讓您的方法返回該類的一個實例?

+0

我剛試過它,它的工作原理。你創建一個新類的想法確實能夠收集字段,但我仍然必須傳遞一個指向該類的指針(因爲我想保留LONG C-Style返回碼)。這將是在風格 - (LONG)readOwnerInformationToDataRecipient :(收件人**)theRecipient – user255607 2010-11-03 19:13:31

+0

或者只是使用NSDictionary兩個方法的輸出。所有這些都是關鍵價值。 – 2010-11-03 19:17:21

+0

@ user255607:你爲什麼要/需要返回一個'long'? – mipadi 2010-11-03 19:58:37

1

大概是「可可路」將返回一個NSDictionary,如果你不希望有一個自定義類:

- (NSDictionary*) readOwnerInformationToNationalNumber 
{ 
    // do stuff 

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

    return returnedDictionary; 
} 

這是用來在可口可樂在許多地方如NSURL -resourceValuesForKeys:error