Так что мой код делает то, что он принимает NSDate от UIDaterPicker (timePicker) и изменяет часовой пояс. После этого он возвращается в NSDate для запуска NSTimer.Найденный nil в функции NSDateFormatter
Но он падает внутри функции convertToDate. По-видимому, кажется, что я пытаюсь принудительно отключить разворот. Но почему это необязательно?
@IBOutlet weak var timePicker: UIDatePicker!
func convertTime() -> String {
let date = timePicker.date
print("date", date)
let myTimeZone = NSTimeZone.localTimeZone()
let df = NSDateFormatter()
df.timeZone = myTimeZone
df.dateFormat = "yyyy.MM.dd G 'at' HH:mm:ss zzz"
let time = df.stringFromDate(date)
return time
}
func convertToDate() -> NSDate {
let date = convertTime()
let dateformatter = NSDateFormatter()
let convertedTime = dateformatter.dateFromString(date)
return convertedTime!
}
func fireTime() -> NSDate {
let time = convertToDate().dateByAddingTimeInterval(60*60*2.4)
return time
}
func updateTimeLeft() {
let elapsedTime = fireTime().timeIntervalSinceDate(NSDate())
self.ringTime.text = NSDateComponentsFormatter().stringFromTimeInterval(elapsedTime)
}
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(ViewController.updateTimeLeft), userInfo: nil, repeats: true)
'NSDate' не имеет часового пояса для изменения. –
Слово предупреждения с точки зрения архитектуры. Лучше сделать ваши небольшие вспомогательные функции, такие как 'convertToDate()', 'fireTime()' использовать параметры для своих входных данных, а не напрямую обращаться к полям объектов. Таким образом, эти функции легко проверяются изолированно. – Alexander
Знаете ли вы о опциях? Вы знаете, что вы на самом деле делаете с 'return convertTime!'? У вас есть googled документы? – luk2302