【问题标题】:iOS Method Return Multiple Values NSDictionaryiOS 方法返回多个值 NSDictionary
【发布时间】:2013-12-08 21:22:58
【问题描述】:

我有一个我称之为计算任何一天的日出、中午和日落的方法。我将日期作为 Julian 传递给该方法。

该方法需要返回三个数字或字符串:Sunrise、Noon 和 Sunset。

我试图这样称呼它:

ClassSolarCalculations *LINK = [[ClassSolarCalculations alloc] init];
NSString dateSunrise= [[NSString alloc] initWithFormat:@"%f", [LINK CalculateSunrise: Julian]];

方法读取的位置:

(NSDictionary *) CalculateSunrise: (double) Julian;

NSDictionary *returnTimes = [NSDictionary initWithObjectsAndKeys: SunriseText, @"Sunrise", NoonText, "@Noon", SunsetText, @"Sunset", nil];
return returnTimes;

我可以通过这种方法返回单个值,但希望一次性返回所有三个值,而不是通过三次调用例程的变体来捏造解决方案……

【问题讨论】:

    标签: ios methods nsdictionary


    【解决方案1】:

    这里有很多东西应该改变:

    1. 方法和变量名应以小写字母开头并使用驼峰式。
    2. 重命名CalculateSunrise: 方法,因为它会返回更多值。也许calculateSunTimes:
    3. 由于您的方法返回NSDictionary,因此您对返回的处理需要有所不同。

    试试这个:

    ClassSolarCalculations *link = [[ClassSolarCalculations alloc] init];
    NSDictionary *times = [link calculateSunTimes:julian];
    NSString *sunrise = times[@"sunrise"];
    NSString *noon = times[@"noon"];
    NSString *sunset = times[@"sunset"];
    

    你的方法应该是这样的:

    - (NSDictionary *)calculateSunTimes:(double)julian {
        // calculate the three values:
    
        return @{ @"sunrise" : sunriseText, @"sunset" : sunsetText, @"noon" : noonText };
    }
    

    注意现代 Objective-C 语法的使用。

    【讨论】:

    • 效果很好,并且吸取了一些教训。非常感谢EH
    猜你喜欢
    • 2017-08-30
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多