こんにちは!ぱかぱかです!
正月休みはテンポよく投稿できていたのですが、仕事が始まった途端に投稿が途絶えてしまいました…
1月は週末にスノボや旅行など色々な予定が入っており、充実した日々を過ごしておりました。
今週末は久しぶりに何も予定がないので書き進めていきたいと思います。
今回はiOSのStoryboard開発についてです。
Storyboard
せっかくMacを買ったのにiOSの開発をまともにやっていなかった私…
だいぶ前ですが、iOS開発について書いた記事が以下です。
radish-se.hatenablog.com
radish-se.hatenablog.com
この本をベースにサラッと触って終了しています…
この時行っていたのはSwiftUIによる開発でした。
SwiftUIは2019年に登場した開発方法で、今はこちらが主流となっています。
一方でStoryboard開発はSwiftUIが登場する以前の開発方法です。
オブジェクトをドラッグ&ドロップで配置してレイアウトを作っていきます。
今はSwiftUIが主流なのになぜ今さらStoryboardを復習しようとしているかというと、業務のアプリでStoryboardを使っているからですね。
画面についてはあまり新規で作成する機会がなかったので、このタイミングで改めて学び直しておこうと思います。
題材
Udemyを見てもSwiftUIの講座ばかりでなかなかStoryboardを扱っているものが見つからず。
色々漁っているとようやくちょっと古めでStoryboardを使っている以下講座に出会いました。
今回はこの講座をベースに学習を進めました。
作ったもの
講座の内容に従って簡単なメモアプリを作成しました。
所要時間はなんだかんだ2~3時間?
UITableViewを使ったメモ一覧。
右上の+で新規メモ追加。
スワイプでメモの削除が可能。
左上のアイコンをタップすると、ActionSheetで色を選択しメモのヘッダーの色が変えられる。
設定情報はUserDefaultに保存し、アプリ再起動後も設定内容が反映される。
学び
・Realmを使ったDB管理なんか楽そう
DBについて、業務のアプリではAndroid/iOSともにSQLiteを使っています。
今回はRealmを使ってメモ情報の登録・削除・更新を行ったのですが、なんかDBを意識せずできてしまった感じがあります。
ざっくりの流れは以下のような感じ。
①Realmモデルを定義する
Objectクラスを継承してプロパティに@objc dynamicキーワードを付ける。
class MemoDataModel: Object { @objc dynamic var id: String = UUID().uuidString @objc dynamic var text: String = "" @objc dynamic var recordDate: Date = Date() }
②Realmをインポート
import RealmSwift
③Realmオブジェクトを取得
let realm = try! Realm()
④CRUD操作
数行で直感的にかける。
・Create
val newMemo = MemoDataModel() try! realm.write { realm.add(newMemo) }
・Read
let result = realm.objects(MemoDataModel.self)
・Update
try! realm.write { newMemo.text = newText }
・Delete
try! realm.write { realm.delete(targetMemo) }
なんか楽ちんでいいな〜と思いました。
AndroidのRoomでもあくまでカラム名とかを意識してDBいじってます感があったので、差を感じました。
複雑な処理はどうやるのかわかりませんが…
UI部品使いこなせたら便利そう
今回はUITableViewとアクションシートとタブバーのボタンくらいしかいじっていませんが、単純な処理をする分には思いの外扱いやすかったです。
業務でView周りに苦しめられている姿をよく見るので、複雑なことをやろうとすると大変なのだと思いますが、今回はそれを味わうことなく終わったのでまだiOS嫌いにはならずにすみました。