この記事は2019年01月15日に投稿しました。
目次
- 作者: 荻原剛志
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2017/12/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
PWEditorで使用しているSwiftのデータベースRealmでデータを登録する方法についてです。
2. SwiftのデータベースRealmでデータを登録する
SwfitのデータベースRealmでデータを登録するには、Realmクラスのaddメソッドを使用します。
またaddメソッドはトランザクション内で実行する必要があります。
トランザクションはRealmクラスのwriteメソッドを使用します。
addメソッド
書式
public func add(_ object: Object, update: Bool = false)
引数
object
登録するデータのモデルクラス
update
データを登録または更新するか指定します。
trueの場合、更新されます。
(更新については後日別の方法で紹介します)
falseの場合、登録されます。
writeメソッド
書式
public func write(_ block: (() throws -> Void)) throws
引数
blcok
トランザクション内で行うデータベース操作
実装例
// モデルクラス 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" } }
// 登録 let realm: Realm do { realm = try Realm() realm.write() { // トランザクションを開始します。 // 登録済みのデータを、プライマリキー"id"の降順で検索します。 let results = realm.objects(PersonalInfo.self).sorted(byKeyPath: "id", ascending: false) // 登録件数を取得します。 let count = result.count // プライマリキーのIDが重複しないように設定します。 let id: Int if (count == 0) { // 登録データが0件の場合 id = 0 } else { // 登録データがある場合 // IDは既存のID+1とします。 // データを削除している場合、"id"が歯抜けの可能性がありますが、 // 今回は考慮しません。 id = results.id + 1 } // PersonalInfoモデルを生成し、各プロパティを設定します。 let personalInfo = PersonalInfo() personalInfo.id = id personalInfo.name = "yamada" personalInfo.age = 21 personalInfo.address = "tokyo" personalInfo.email = "yamada@gmail.com" // PersonalInfoをデータベースに登録します。 realm.add(personalInfO) } } catch { // 必要に応じて、エラー処理を行います。 }
3. おわりに
最初トランザクションの存在を忘れていて、データ登録できませんでした。
トランザクションは
- beginWriteメソッド
- commitWriteメソッド
- cancelWriteメソッド
でも組めるようですが、こちらの方法はうまくいきませんでした。
(今も動作しないかは確認していないので、わかりません)
たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 10 Swift 4.2対応
- 作者: 藤治仁,小林加奈子,小林由憲
- 出版社/メーカー: ソシム
- 発売日: 2018/10/22
- メディア: 単行本
- この商品を含むブログを見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688