5
11

More than 3 years have passed since last update.

【新人プログラマ応援】この素晴らしいSwiftUIにCoreDataを!【初期設定編】

Last updated at Posted at 2021-03-22

こんにちは.
Sadmachineです.
いまさらながら,このすばを見始めました.
めぐみんかわいい.

この記事ではアプリ開発の基礎...
Xcodeプロジェクトの開始〜CoreDataの初期設定までをわかりやすく解説します!
スクリーンショットも適宜つけるので参考にしてください!

CoreDataのことだけ知りてえよ! っていう君はSection 2から見るといいと思うよ.

LGTMたくさんしてね!!!

そもそも「CoreData」ってなに?

CoreDataとは...

Xcode上から簡単にDBのようにデータ構造を設定できたり,アプリ上で扱うデータを保存,削除,更新するプログラムを簡単に書けるようになる仕組み
参考記事:やっとわかったSwift/CoreData入門 【part1:概念編】

とのこと.
もっと簡単に言うと...

アプリのデータをiPhoneの端末本体内のストレージに保存して永続化するために必要なもの!

って感じでしょうか.
ざっくりすぎたかな...

とりあえず,詳しいことは参考記事を見てみてね!

目次

0. 開発環境

筆者の開発環境をめっちゃ簡単に紹介します.

  • Xcode 12.3
  • SwitfUI

以上.
もっと詳しく知りたい人はTwitterに凸して,どうぞ.

1. プロジェクトを作ろう!

以下の項目はXcodeをインストールしてある前提で話していきます.

1-1 Xcodeの起動&プロジェクトファイルを作る

スクリーンショット 2021-03-22 21 54 25
Xcodeを起動すると上のような画面が出てくるので,Create a new Xcode Projectを押してください.

スクリーンショット 2021-03-22 22 00 01
そうするとこんな画面が出るので[App]を選択してNext.

スクリーンショット 2021-03-22 22 00 26
Product Nameとかは適当につけます.

白抜きの部分も適当な名前をつけてください.
重要なのは赤く囲まれたUse CoreDataのチェックマークです.
忘れずにつけましょう.

スクリーンショット 2021-03-22 22 06 45
こんな感じの画面になってればOK!

↑MugenMemoというプロジェクト名になっていますが,これがProduct Nameです.
人によって違います.

プロジェクトの作成は完了です.

1-2 ContentView.swiftの修正

1-1の最後の画像の通り,エラーが吐かれています.
とりあえず「ContentView.swift」の中身を以下のようにすればOKです.

ContentView.swift
import SwiftUI
import CoreData

struct ContentView: View {
    var body: some View {
        NavigationView {
            List {
                Text("TEST")
            }
        }
    }



}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

スクリーンショット 2021-03-22 22 12 31
ContentView.swiftの中身を変えればこんな感じでList形式でTESTという文字が出てくるはずです.
↑図ではResumeを使ってますが,エミュレーターでも同じように出ます.

これでSection 1 プロジェクトを作ろうは完了です!

2. CoreDataの初期設定をしよう

CoreDataの初期設定を進めていきます.

2-1 Entityの新規追加

スクリーンショット 2021-03-22 22 25 31
MugenMemo.xcdatamodeldを開いて,↑図のようにEntityを作ります.

Entityを作るには,Add Entityを選択して適当な名前をつけます.
今回はMemoにしました.
Entityを作ったら,Attributeを追加します.
Attributes下の+を押して,Attribute:title Type:String にします.

2-2 Entityのclass変更

ENTITESのMemoを押してDatamodelInspecter(右側の帯のいろいろな設定でるやつ)を表示させます.

スクリーンショット 2021-03-22 22 29 59
↑図の赤く囲った部分Class CodegenのClass DefinitionをManual/Noneに変更します.

スクリーンショット 2021-03-22 22 34 15
こんな感じになってればOKです.

2-3 CoreDataの管理に必要なコードを手動生成

Entity名+CoreDataClass.swift
Entity名+CoreDataProperties.swift
がないとCoreDataは使えないので手動で生成します.

スクリーンショット 2021-03-22 22 40 05
ENTITESのMemoを選択した状態で,Editor/NSManagedObject Subclass...を選択.
Memo+CoreDataClass.swift
Memo+CoreDataProperties.swift
の2つができたはずです.

Memo+CoreDataClass.swift
import Foundation
import CoreData

@objc(Memo)
public class Memo: NSManagedObject {

}
Memo+CoreDataProperties.swift
import Foundation
import CoreData


extension Memo {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Memo> {
        return NSFetchRequest<Memo>(entityName: "Memo")
    }

    @NSManaged public var title: String?

}

extension Memo : Identifiable {

}

以上でSection 2 CoreDataの初期設定をしよう は完了です.

2-* もしもEntityにAttributeを追加したら...

Entityに別の属性のAttributeを追加した場合はEntity名+CoreDataProperties.swiftを編集します.
例えば,MemoにAttribute:text Type:Stringを追加した場合は以下のように編集しましょう.

Memo+CoreDataProperties.swift
import Foundation
import CoreData


extension Memo {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Memo> {
        return NSFetchRequest<Memo>(entityName: "Memo")
    }

    @NSManaged public var title: String?
    @NSManaged public var text: String? // ここを追加

}

extension Memo : Identifiable {

}

@NSManaged public var text: String?」を追加することで完了です.

まとめ

プロジェクトの開始〜CoreDataの初期設定までをわかりやすく解説しました.
長くなりそうだったので今回はここまで.

次回は,

CoreDataの読み書きをしてみよう!

の予定です.
実際にSwiftUIを使いながらCoreDataに適当な文字列を追加し,保存するという一連の流れをやってみます.

備忘録的なまとめですが,誰かの参考になれば嬉しいです.
少しでも参考になりましたらLGTMやフォロー,Twitterでの拡散をしていただければ幸いです.

次回の記事:この素晴らしいSwiftUIにCoreDataを!【CoreData読み書き編】

参考サイト

5
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
11