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

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

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

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

Q&A

0回答

368閲覧

swift CoreData取扱時のコードエラー

ataru2222

総合スコア272

Swift

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

0グッド

0クリップ

投稿2019/07/25 17:57

こちらのサイトをみながらCoreDataの使い方を学習しています。
https://qiita.com/snowman_mh/items/0d27f4abf7b14c72107f

swift

1 2import UIKit 3 4class AddTaskViewController: UIViewController { 5 6 @IBOutlet weak var taskTextField: UITextField! 7 @IBOutlet weak var categorySegmentedControl: UISegmentedControl! 8 9 var taskCategory = "ToDo" 10 11 @IBAction func categoryChosen(_ sender: UISegmentedControl) { 12 13 switch sender.selectedSegmentIndex { 14 case 0: 15 taskCategory = "ToDo" 16 17 case 1: 18 taskCategory = "Shopping" 19 20 case 2: 21 taskCategory = "Assignment" 22 23 default: 24 taskCategory = "ToDo" 25 } 26 27 } 28 29 30 31 32 33 34 @IBAction func cancelButton(_ sender: Any) { 35 dismiss(animated: true, completion: nil) 36 } 37 38 @IBAction func okButton(_ sender: Any) { 39 } 40 41 @IBAction func plusButton(_ sender: Any) { 42 43 // TextFieldに何も入力されていない場合は何もせずに1つ目のビューへ戻ります。 44 let taskName = taskTextField.text 45 if taskName == "" { 46 dismiss(animated: true, completion: nil) 47 return 48 } 49 50 // context(データベースを扱うのに必要)を定義。 51 let context = (UIApplication.shared.delegate as! AppDelegate) 52 53 // ★★★taskにTask(データベースのエンティティです)型オブジェクトを代入します。 54 // ★★★このとき、Taskがサジェストされない(エラーになる)場合があります。 55 // ★★★詳しい原因はわかりませんが、Runするか、すべてのファイルを保存してXcodeを再起動すると直るので色々試してみてください。 56 let task = Task(context: context) 57 58 // 先ほど定義したTask型データのname、categoryプロパティに入力、選択したデータを代入します。 59 task.name = taskName 60 task.category = taskCategory 61 62 63 // 上で作成したデータをデータベースに保存します。 64 (UIApplication.shared.delegate as! AppDelegate).saveContext() 65 66 dismiss(animated: true, completion: nil) 67 68 } 69 70 71 override func viewDidLoad() { 72 super.viewDidLoad() 73 74 // Do any additional setup after loading the view. 75 } 76 77 78}

コメントの★★★を入れた部分でどうしてもエラーが出てしまいます。
イメージ説明

エラーの詳細は
Cannot convert value of type 'AppDelegate' to expected argument type 'NSManagedObjectContext'

 

翻訳を使うと
タイプ 'AppDelegate'の値を予想される引数タイプ 'NSManagedObjectContext'に変換できません

というエラーが出てしまいます。
作成者の方もエラーが出るとコメントで書いて頂けているのですが、少し古い記事なのか再起動をかける程度では直らなかったので質問させていただきました。

CoreDataの使い方詳しい方、いらっしゃいましたらご教授願います。
よろしくお願いいたします。

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

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

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

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

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

MasakiHori

2019/07/26 06:42

1点目  あなたのコードと参考にしたサイトのコードが同じではないです。よく見てください。 2点目  Xcodeのバージョンによってテンプレートが変わるためNSManagedObjectContextを取得する方法が変わります。参考にしているサイトはSwift3を使っているようなのでかなり古い情報と思ったほうが良いです。現在のSwiftのバージョンは5です。
ataru2222

2019/07/26 08:15

ありがとうございます。 全体のコードを入力する前にひとつひとつコードの状態を確認しながらやってる最中、途中での確認RUNができなかったので、その状態で質問しておりました。 説明不足ですみません。 結構古い記事なので修正も大変かもですね。 エラー箇所や、コードの記述に関して、どことどこがリンクしているのかなんとなくでしかわからないレベルなのでもう少し勉強して、出直そうと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問