この記事は2019年01月13日に投稿しました。
目次
詳細!Swift 4 iPhoneアプリ開発 入門ノート Swift 4+Xcode 9対応
- 作者: 大重美幸
- 出版社/メーカー: ソーテック社
- メディア: Kindle版
- この商品を含むブログを見る
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
PWEditorではデータベースにSwift版Realmライブラリを使用しています。
何回かに分けてRealmライブラリの使い方を紹介したいと思います。
今回はモデルの作成方法について紹介します。
2. SwiftでデータベースRealmのモデルを作成する
2-1. インストール
Swift版Realmはライブラリとして提供されています。
PWEditorではCocoaPodsでインストールしています。
以下は端末を開き、アプリのプロジェクトフォルダで作業して下さい。
1. 最新のRealmをインストールするため、以下のコマンドを実行しCocoaPodsのSpecリポジトリを更新します。
pod repo update
2. プロジェクトフォルダに、以下のPodfileを作成します。
use_frameworks! pod 'RealmSwift'
3. 以下のコマンドを実行し、Realmライブラリをインストールします。
pod install
2-2. モデルとは
Realmのモデルとは、データベースでいうとテーブルと考えられます。
Realmのモデルはクラスとして作成します。
アプリケーションはモデルを通して、Realmのデータベースにアクセスすることになります。
2-3. モデルの作成方法
Realmのモデルはクラスとして、以下のように作成します。
- Objectクラスを継承するようにします。
- テーブルの項目は、クラスのプロパティとして"@objc dynamic var ~"で定義します。
- プライマリキーとなる項目はprimaryKeyメソッドをオーバーライドして、プライマリキーとなる項目の項目名を返却するようにします。
プロパティに使用できるデータ型は以下の通りです。
- Bool
- Int、Int8、Int16、Int32、Int64
- Double
- Float
- String
- Date
- Data
実装例
// モデルクラス import RealmSwift class PersonalInfo: Object { // ID @objc dynamic var id = 0 // プライマリーキー項目(項目名は任意です) // 名前 @objc dynamic var name = "" // 年齢 @objc dynamic var age = 0 // 住所 @objc dynamic var address = "" // Eメールアドレス @objc dynamic var email = "" /** プライマリキーのプロパティ名を返却します。 - Returns: プライマリキーのプロパティ名 */ override static func primaryKey() -> String? { return "id" } }
3. おわりに
PWEditorでデータベースの導入を検討した時、最初はCoreDataを検討しました。
しかしCoreDataの情報はあまりなく、また使い方も独特なので導入を断念しました。
次に検討したのがRealmでした。
当時Realmも情報はあまりありませんでした。
しかし公式サイトのドキュメントを見ながら、PWEditorで必要な機能が実現できたため、利用することにしました。
知識・スキルの販売サイト【ココナラ】
詳細! Swift iPhoneアプリ開発入門ノート iOS12 + Xcode 10対応
- 作者: 大重美幸
- 出版社/メーカー: ソーテック社
- 発売日: 2018/11/03
- メディア: 単行本
- この商品を含むブログを見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688