2013-12-08 2 views
0

У меня есть метод, который я называю, который вычисляет Восход, Полдень и Закат в течение любого заданного дня. Я передаю метод день день, как Джулиан.Метод 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. Имена методов и переменных должны начинаться с букв строчной буквы и использовать чехол для верблюда.
  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 –

Смежные вопросы