swiftに慣れるためにiOS標準搭載の目覚ましアプリを再現しようとしています。
iOSやXcodeのバージョンが違うせいなのか、他サイトで紹介されている手法ではエラーが出てしまいました。
以下のようにViewController.swiftを書き、storyboardには、DatePickerとButtonを一つずつ配置しているのみです。
以下のソースコード中にエラーを記しましたので、解決策をおまちしております。
要点をまとめますと、
Date型のデータをDateComponents型に変えたい。
ということです。
非常にわかりにくいかと思われますので、回答以外にも質問がございましたら、お気軽にご投稿ください。
swift
1// ViewController.swift 2 3import UIKit 4import UserNotifications 5 6class ViewController: UIViewController { 7 8 @IBOutlet weak var Label: UILabel! 9 @IBOutlet weak var myDatePicker: UIDatePicker! 10 11 var taskDate = DateComponents() 12 let push = UNUserNotificationCenter.current() 13 var willTaskDate = Date() 14 15 override func viewDidLoad() { 16 17 super.viewDidLoad() 18 19 let nowTime: NSDate = NSDate() 20 myDatePicker.date = nowTime as Date 21 22 23 push.requestAuthorization(options: [.badge, .sound, .alert], 24 completionHandler: { (granted, error) in 25 if granted{ 26 debugPrint("通知許可") 27 } else { 28 debugPrint("通知拒否") 29 }}) 30 } 31 32 override func didReceiveMemoryWarning() { 33 super.didReceiveMemoryWarning() 34 } 35 36 @IBAction func setDate(_ sender: Any) { 37 willTaskDate = myDatePicker.date 38 39 40 let dateFormatter = DateFormatter() 41 dateFormatter.dateFormat = "MM/dd HH:mm" 42 print(dateFormatter.string(from: willTaskDate)) 43 } 44 45 @IBAction func setTask(_ sender: Any) { 46 print("setTask moved.") 47 let cal = Calendar.current 48 49 /** この文にエラーが出てしまう **/ 50 /** Error : Editor placeholder in source file **/ 51 taskDate = cal.dateComponents(components: [.year, .month, .day, .hour, .minute], from: willTaskDate) 52 53 let content = UNMutableNotificationContent() 54 let calendarTrigger = UNCalendarNotificationTrigger(dateMatching:taskDate, repeats: false) 55 let calendarRequest = UNNotificationRequest(identifier: "test", content: content, trigger: calendarTrigger) 56 57 push.add(calendarRequest, withCompletionHandler: nil) 58 } 59 60} 61 62
回答1件
あなたの回答
tips
プレビュー