Realm meet up #17

39
Realm meet up #17

Transcript of Realm meet up #17

Page 1: Realm meet up #17

Realm meet up #17

Page 2: Realm meet up #17

自己紹介 永田大祐

https://www.facebook.com/daisuke.nagata.96995

職業 フリーランス iosエンジニア

協力会社  ポテパン

https://potepan.com

Page 3: Realm meet up #17

今までに参画した案件

漫画アプリ、セキュリティアプリ→objecitve-c言語

ログデータのSDK、相続税アプリ→Swift言語

現在は

常駐と受託の2つの業務を実施しております。

業務案件は

真面目に対応いたしますので、お声かけ願います!

Page 4: Realm meet up #17

常駐務案件でRealmを使用。

Page 5: Realm meet up #17

具体的には?

Page 6: Realm meet up #17

https://github.com/daisukenagata/Dbank/tree/RxSwiftReal

m

アプリケーションをモデルに

Realmの導入解説、

機能解説を実施します。

Page 7: Realm meet up #17

Realmの導入!!

Page 8: Realm meet up #17

ターミナルでプロジェクト選択して

pod install

Page 9: Realm meet up #17

Realmの主な使い方

Page 10: Realm meet up #17

オブジェクト(class)を作り

オブジェクト内の

プロパティに型宣言をする。

Page 11: Realm meet up #17

//オブジェクトの生成

class RealmObject: Object {//プロパティ設定

dynamic var ID = String()dynamic var ID2 = String()dynamic var ID3 = String()

}

Page 12: Realm meet up #17

String型の他に

Bool Int8 Int16 Int32 Int64 Double Float NSDate NSData

などサポートしてます。

Page 13: Realm meet up #17

Realmにデータ内容を

書き込む。

Page 14: Realm meet up #17

//オブジェクトの追加

let obj:Array = [usernameOutlet.text!,ageOutlet.text!,passwordOutlet.text!]

//1万件を書き込んだ場合

for _ in 1...10000{try!realm.write{

let object = objrealm.create(RealmObject.self,value: object)

}}

Page 15: Realm meet up #17

Realmのデータ内容削除。

Page 16: Realm meet up #17

if editingStyle == .Delete {//オブジェクト削除

try! realm.write {realm.delete(users[indexPath.row])self.tableView.reloadData()

}}

Page 17: Realm meet up #17

Realmの書き込んだ

データをソートする。

Page 18: Realm meet up #17

 

//IDのプロパティをソート

let users = realm.objects(RealmObject).sorted("ID", ascending: false)

Page 19: Realm meet up #17

Realmでは多数のNSPredicate構文を

サポートしています。

Page 20: Realm meet up #17

アップデートに伴う

マイグレーション。

Page 21: Realm meet up #17

スキーマバージョンを設定したことがなければ、

最初は0が設定されています。

Realmは自動的に、追加されたプロパティと、

削除されたプロパティを認識します。

ディスク上のスキーマを

自動的にアップデートします。

Page 22: Realm meet up #17

// 新しいスキーマバージョンを設定します。

let config = Realm.Configuration(

schemaVersion: 1,migrationBlock: { migration, oldSchemaVersion in

if (oldSchemaVersion < 1) {

} })

Page 23: Realm meet up #17

データ容量を調べるには?

Page 24: Realm meet up #17

Realmファイルを確認。

Page 25: Realm meet up #17

シュミレーターの場合

Page 26: Realm meet up #17

RealmFileのFileURL

を取得する。

Page 27: Realm meet up #17

print(Realm.Configuration.defaultConfiguration)

Page 28: Realm meet up #17

取得したRealmFilePathと

保存先のFilePathを合わせて、

ターミナルで操作。

Page 29: Realm meet up #17
Page 30: Realm meet up #17

RealmFileのコピー

Fileサイズの最適化

Page 31: Realm meet up #17

let congig = Realm.Configuration.defaultConfigurationlet realmFileURL = congig.fileURLlet copyFileURL = realmFileURL!.

URLByDeletingLastPathComponent!.URLByAppendingPathComponent("f1.realm")

do {let realm = try Realm(configuration: congig)try realm.writeCopyToURL(copyFileURL)

} catch {//エラー時の処理

}

Page 32: Realm meet up #17
Page 33: Realm meet up #17

Realmオブジェクトの

プロパティ名変更。

Page 34: Realm meet up #17

プロパティにデータを保持しながら、

プロパティ名を変更したい時に実施。

Page 35: Realm meet up #17

// 新しいスキーマバージョンを設定します。

let config = Realm.Configuration(schemaVersion: 1,migrationBlock: { migration, oldSchemaVersion in

if (oldSchemaVersion < 1) {// 新しいプロパティ名を設定します。

migration.renamePropertyForClass(RealmObject.className(), oldName: "ID", newName: "age")

} })

Page 36: Realm meet up #17

業務実践で実施した項目をサンプルのアプリ

ケーションをモデルに解説しました。

Page 37: Realm meet up #17

Realm自体の機能スピードが

早いとの事ですが、

Realmを実施する手順、メソッドの種類、

コードの可読性などが良い、

作業効率が良いと思いました。

Page 38: Realm meet up #17

経験の少ない開発者でもRealmを通じて、

プログラミングを学び、

早い成長が出来るFrameWorkと

感じております。

Page 39: Realm meet up #17

Thank you Realm !!!