2015-11-21 3 views
0

В настоящее время я работаю над первым проектом Swift и делаю ошибки новичка.Почему этот код Swift получает ошибки?

Класс я работаю предназначен для экспорта трех своих методов глобальных переменных:

var getAngle:[AnyObject]!; 
var getHours:[AnyObject]! 
var getMinutes:[AnyObject]!; 

class GpsViewController : UIViewController { 

    // .... 

    required init() { 
     // super.init(); 
     formatter.dateFormat = "yyyy-MM-dd"; 
     parser.locale = NSLocale(localeIdentifier: "en_US_POSIX"); 
     parser.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZ"; 
     getAngle = self.restrictToAngle; 
     getHours = self.restrictToHours; 
     getMinutes = self.restrictToMinutes; 
    } 

    func getHourAndAngle() { // Hour hand angle in radians from 12 o'clock position, clockwise. 
     var now = NSDate(); 
     var today = now; 
     var todayFormatted = this.formatter(today); 
     var yesterday = today.dateWithTimeIntervalSinceNow(-24 * 60 * 60); 
     var yesterdayFormatted = this.formatter(yesterday); 
     var tomorrow = today.dateWithTimeIntervalSinceNow(24 * 60 * 60); 
     var tomorrowFormatted = this.formatter(tomorrow); 
     var yesterdaySunset = this.presentLocation[yesterdayFormatted]["sunset"]; 
     var todaySunrise = this.presentLocation[todayFormatted]["sunrise"]; 
     var todaySunset = this.presentLocation[todayFormatted]["sunset"]; 
     var tomorrowSunrise = this.presentLocation[tomorrowFormatted]["sunrise"]; 

     var duration = 0.0; 
     var position = 0.0; 
     var startingHour = 18; 
     var offset = 0.0; 
     if now.isLessThanDate(todaySunrise) { 
      length = todaySunrise.timeIntervalSinceDate(yesterdaySunset); 
      position = now.timeIntervalSinceDate(yesterdaySunset); 
      offset = -0.5; 
     } else if now.isLessThanDate(todaySunset) { 
      length = todaySunset.timeIntervalSinceDate(todaySunrise); 
      position = now.timeIntervalSinceDate(todaySunrise); 
      offset = 0.5; 
      startingHour = 6; 
     } else { 
      length = tomorrowSunrise.timeIntervalSinceDate(todaySunset); 
      position = now.timeIntervalSinceDate(todaySunset); 
      offset = 1.5; 
     } 
     var proportion = position/length; 
     var angle = M_PI + (2 * M_PI * (proportion + offset)); 
     var hours = floor(24 * 60 * 60 * ((1 + proportion + offset) % 1.0)/(60 * 60)); 
     var minutes = floor(24 * 60 * 60 * (1 + proportion + offset) % 60 * 60); 
     return ["angle": angle, "hour": hour, "minutes": minutes]; 
    } 

    func restrictToHours() { 
     return getHoursMinutesAngle["hour"]; 
    } 

    func restrictToAngle() { 
     return getHoursMinutesAngle["angle"]; 
    } 

    func restrictToMinutes() { 
     return getHoursMinutesAngle["minutes"]; 
    } 

    // ... 
}

Я получаю несколько ошибок, в том числе в Init() 's присвоение GetAngle, «Ценность тип GpsViewController не имеет ограничения на членство ".

Не могли бы вы рассказать мне, какие здесь ошибки n00b?

+0

По крайней мере, вы должны объявить тип возврата в 3-х функциях внизу, поскольку они явно что-то возвращают. – vadian

+1

1. Что это такое? 2. В ваших методах возврата отсутствует обратная подпись. 3. Вы назначаете методы, а не вызываете их. – Moritz

+1

@ EricD. возможно, это JavaSwift ;-) – vadian

ответ

1

Вы пытаетесь назначить функцию self.restrictToAngle на getAngle, переменную типа [AnyObject]! (т. Е. Массив).

1

Как отмечают специалисты @EricD и другие, существует довольно много проблем. Для понимания того, как определяется функция, вызовы & возвращают тип работы в swift, проверьте это Apple documentation page.

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