iOS方法返回多个值NSDictionary

时间:2013-12-08 21:22:59

标签: ios methods nsdictionary

我有一个我称之为计算日出,中午和日落的方法。我把这个方法作为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;

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

1 个答案:

答案 0 :(得分:4)

这里应该改变很多事情:

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

    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语法。