2016-10-10 3 views
0

오늘 스위프트 3 언어로 전환했습니다. 나는 이벤트까지 일 시간 분과 초의 카운트 다운을 제공하는 앱을 만들고있다. 아래 코드는 내 응용 프로그램에 다음을 표시합니다.NSDate 전환을 사용하여 카운트 다운 3

옵션 (6) 일 선택 사항 (59) 분 (35 초) 선택 사항.

스위프트 2의 카운트 다운은 정상적으로 작동했지만 일단 스위프트 3로 전환하면 옵션 번호가 숫자 앞에 나타납니다. 스위프트 3에서 경험이있는 사람이이 문제에 대한 해결책을 알고 있습니까?

@IBAction func NextWeeklyButtonPressed(_ sender: AnyObject) { 
    let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTimeWeeks), userInfo: nil, repeats: true) 
    timer.fire()   
    } 

    func printTimeWeeks() { 
    formatter.dateFormat = "MM/dd/yy hh:mm:ss a" 
    let startTime = Date() 
    let endTime = formatter.date(from: WeeklyDate.text!+" 12:00:00 a") 

    // WeeklyDate.text is a date in short style 

    let timeDifference = (userCalendar as NSCalendar).components(requestedComponent, from: startTime, to: endTime!, options: []) 

    WeeklyDateLabel.text = "\(timeDifference.day) Days \(timeDifference.minute) Minutes \(timeDifference.second) Seconds" 
} 
+2

즉, 'timeDifference.day'는 선택 사항입니다. Swift 3에 대한 DateComponents 참조를 찾았습니까? –

답변

0

append! 입력란에

WeeklyDateLabel.text = "\(timeDifference.day!) Days \(timeDifference.minute!) Minutes \(timeDifference.second!) Seconds" 
+0

이 경우 (일반적으로) 옵션을 강제 적용 해제하지 않는 것이 좋습니다. – ff10

+0

일 또는 월 ... 절대로 없을 수 없습니다. 우리는 서버에서 얻은 객체에 대해 nil을 검사해야합니다. 하루 또는 달에는 항상 값이 있습니다.) –

0

선택 사항 문자열을 풀어야합니다.

if let day = timeDifference.day, minute = timeDifference.minute, second = timeDifference.second { 
    WeeklyDateLabel.text = "\(timeDifference.day) Days \(timeDifference.minute) Minutes \(timeDifference.second) Seconds" 
}