2016-10-26 6 views
0

저는 프로그래밍과 스위프트에 초보입니다. 내가 만들고있는 앱은 매우 다양하며 사용자가 설정 한 UIDatePicker에 의해 트리거되는 간단한 로컬 알림을 추가하려고합니다. 알림을 설정했지만 UIDatePicker가 앱을 다시 시작할 때마다 재설정하지 못하도록하는 방법을 이해하려고 애 쓰고 있습니다. 여기에 (물건 AppDelegate.swift에서 진행없이) 관련 코드입니다 : Date 이후UserDefaults를 사용하여 UIDatePicker에서 저장할 수있는 방법은 무엇입니까?

@IBAction func datePicker(_ sender: UIDatePicker) { 

    let selectedDate = sender.date 
    let delegate = UIApplication.shared.delegate as? AppDelegate 
    delegate?.scheduleNotification(at: selectedDate) 

} 

답변

0

NSCoding을 준수하지 않는, 당신은 직접 사용자 기본값에 저장할 수 없습니다. "속성 목록 유형"(속성 목록에 저장할 수있는 유형, 즉 Int, Double, String, Dictionary 등)을 변환해야합니다. 이 경우 변환 할 DateDouble A를 :

let selectedDate = sender.date 
let timeSince1970 = selectedDate.timeIntervalSince1970 
// now we have the double value, we can store it in user defaults! :) 
UserDefaults.standard.set(timeSince1970, forKey: "myDate") 

편집 :

아차! 나는이 하나가 잘못 얻었다처럼 당신이 실제로 직접 사용자 기본값에 Date를 저장할 수 있습니다 보인다 :

UserDefaults.standard.set(selectedDate, forKey: "myDate") 

저장된 날짜를 다시 얻을 날짜 선택의 선택된 날짜로 설정하려면이 작업을 수행 viewDidLoad에서 :

let selectedDate = UserDefaults.standard.object(forKey: "myDate") as? Date 
myDatePickerOutlet.setDate(selectedDate ?? Date(), animated: false) 

당신이 날짜로 Double를 저장하면이처럼 검색 할 수 있습니다

let selectedDate = Date(
    timeIntervalSince1970: UserDefaults.standard.double(forKey: "myDate")) 
+0

작동하지 않을 수 있습니다. 코드에 "myDatePickerOutlet"이 있지만 UIDatePicker의 IBAction 만 있습니다. 내 UIDatePicker에서 IBOutlet을 추가하려고 시도했지만 트릭을하지는 않았습니다. –

+0

@RichardRenklint 콘센트를 추가 할 수는 없습니다. 콘센트가 필요합니다. – Sweeper

+0

Ok. 그렇다면 알림을 엉망으로 만들지 않고 올바른 방법으로 추가하려면 어떻게해야합니까? 또한 "IBAction func datePicker"안에 코드를 넣어야하는지 잘 모르겠습니다. –