【问题标题】:Returning several NSString返回几个 NSString
【发布时间】:2010-11-03 18:56:01
【问题描述】:

我想创建一个返回多个 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 作为返回参数。

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

问候, 苹果92

【问题讨论】:

    标签: objective-c pointers parameters nsstring


    【解决方案1】:

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

    【讨论】:

    • 我刚刚试了一下,效果很好。您创建一个新类的想法确实可以收集字段,但我仍然必须传递一个指向该类的指针(因为我想保留 LONG C 样式的返回代码)。它将采用样式 - (LONG) readOwnerInformationToDataRecipient:(Recipient**) theRecipient
    • 或者只使用 NSDictionary 作为方法的两个输出。所有这些都只是键值。
    • @user255607:你为什么想要/需要返回long
    • 我返回一个 long 来警告调用者搜索过程的结果。
    【解决方案2】:

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

    - (NSDictionary*) readOwnerInformationToNationalNumber
    {
        // do stuff
    
        NSDictionary* returnedDictionary 
            = dictionaryWithObjectsAndKeys:
                  nationalNumber,           @"nationalNumber",
                  name,                     @"name",
                  // etc ...
                  cardDeliveryMunicipality, @"cardDeliveryMunicipality",
                  nil];
    
        return returnedDictionary;
    }
    

    这在 Coca 中的许多地方都有使用,例如。 NSURL -resourceValuesForKeys:error

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      • 2013-09-07
      相关资源
      最近更新 更多