質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2308閲覧

Xcodeでデフォルト搭載の目覚ましアプリを再現したい

KazumaNagayoshi

総合スコア7

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/16 13:44

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2017/02/16 23:56 編集

(deleted)
guest

回答1

0

ベストアンサー

swift

1taskDate = cal.dateComponents(_ [.year, .month, .day, .hour, .minute], from: willTaskDate)

これでいけるかな?

taskDateだとDate型に見えるので、名前を変えた方がいいですね。

投稿2017/02/16 23:56

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KazumaNagayoshi

2017/02/18 00:21

ご丁寧にありがとうございます! エラー排除できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問