見出し画像

Swiftで行こう!--CoreDataを使ってみよ!

下記を参考に自分でもやってみます。

プロジェクトを作ります。この時に

Use Core Dataにチェックをすることを忘れずに!でも、もし忘れてしまっても大丈夫。

を参考に新しいファイル、コードを追加すれば使えるようになります。

CoreDataが使える基本的なプロジェクトができたら次は入れるデータを入れるところを作ります。

一般的なデータベースではテーブルを作りますが、CoreDataではテーブルと言わず、Entitiesと言います。そしてデーターが直接入るフィールドはAttributeという言葉を使っています。ここではEntitiesはMonster、Attributeはnameとしています。

データが入るところを作りました。次にデータを表示、操作するところを作っていきます。

ViewControllerに入力するテキストフィールド、テーブル+セルを表示することを考えます。

textFeld,TableView,TabelCellを設置します。Table cellにidentiferを設定(今回は"Cell"とします)します。テーブルはextensionで記述します。以下。

extension ViewController: UITableViewDataSource{
   
   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return monsters.count
   }
   
   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
       let monData = monsters[indexPath.row]
       cell.textLabel?.text = monData.name
       return cell
   }
}

extensionなので、class ViewController: UIViewController{}の外に記述します。入るところはできました。あとはデータを入れる場所とテーブルにデータが反映されるタイミングです。これは、入力欄に入力してリターンを押したタイミングにしたいので、

func textFieldShouldReturn(_ textField: UITextField) -> Bool {}

 の中に定義していきます。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
       textField.resignFirstResponder()
       
       let newObj = Monster(context: self.manager)
       newObj.name = textField.text
       self.monsters.append(newObj)
       (UIApplication.shared.delegate as! AppDelegate).saveContext()
       
       tableView.reloadData()
       textField.text = ""
       return true
 }

こんな感じにまとめています。

すべのコードです。


この記事が気に入ったらサポートをしてみませんか?