2013-12-08 62 views
0

我有一個方法,我打電話來計算任何給定日期的日出,中午和日落。我在Julian的日子當天通過了這個方法。iOS方法返回多個值NSDictionary

該方法需要返回三個數字或字符串:日出,中午和日落。

我想叫它如下:

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; 

我可以這種方式來工作,返回一個值,但想回到所有三個在一次去,而不是通過調用該例程的變體三次解決方案...

回答

4

很多東西都應該改變在這裏:

  1. 方法和變量名應該以小寫字母開頭並使用camel case。
  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的語法。

+0

這完美的作品和幾個經驗教訓。非常感謝EH –