Realm meet up #17
-
Upload
daisuke-nagata -
Category
Software
-
view
679 -
download
3
Transcript of Realm meet up #17
Realm meet up #17
自己紹介 永田大祐
https://www.facebook.com/daisuke.nagata.96995
職業 フリーランス iosエンジニア
協力会社 ポテパン
https://potepan.com
今までに参画した案件
漫画アプリ、セキュリティアプリ→objecitve-c言語
ログデータのSDK、相続税アプリ→Swift言語
現在は
常駐と受託の2つの業務を実施しております。
業務案件は
真面目に対応いたしますので、お声かけ願います!
常駐務案件でRealmを使用。
具体的には?
https://github.com/daisukenagata/Dbank/tree/RxSwiftReal
m
アプリケーションをモデルに
Realmの導入解説、
機能解説を実施します。
Realmの導入!!
ターミナルでプロジェクト選択して
pod install
Realmの主な使い方
オブジェクト(class)を作り
オブジェクト内の
プロパティに型宣言をする。
//オブジェクトの生成
class RealmObject: Object {//プロパティ設定
dynamic var ID = String()dynamic var ID2 = String()dynamic var ID3 = String()
}
String型の他に
Bool Int8 Int16 Int32 Int64 Double Float NSDate NSData
などサポートしてます。
Realmにデータ内容を
書き込む。
//オブジェクトの追加
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)
}}
Realmのデータ内容削除。
if editingStyle == .Delete {//オブジェクト削除
try! realm.write {realm.delete(users[indexPath.row])self.tableView.reloadData()
}}
Realmの書き込んだ
データをソートする。
//IDのプロパティをソート
let users = realm.objects(RealmObject).sorted("ID", ascending: false)
Realmでは多数のNSPredicate構文を
サポートしています。
アップデートに伴う
マイグレーション。
スキーマバージョンを設定したことがなければ、
最初は0が設定されています。
Realmは自動的に、追加されたプロパティと、
削除されたプロパティを認識します。
ディスク上のスキーマを
自動的にアップデートします。
// 新しいスキーマバージョンを設定します。
let config = Realm.Configuration(
schemaVersion: 1,migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {
} })
データ容量を調べるには?
Realmファイルを確認。
シュミレーターの場合
RealmFileのFileURL
を取得する。
print(Realm.Configuration.defaultConfiguration)
取得したRealmFilePathと
保存先のFilePathを合わせて、
ターミナルで操作。
RealmFileのコピー
Fileサイズの最適化
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 {//エラー時の処理
}
Realmオブジェクトの
プロパティ名変更。
プロパティにデータを保持しながら、
プロパティ名を変更したい時に実施。
// 新しいスキーマバージョンを設定します。
let config = Realm.Configuration(schemaVersion: 1,migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 1) {// 新しいプロパティ名を設定します。
migration.renamePropertyForClass(RealmObject.className(), oldName: "ID", newName: "age")
} })
業務実践で実施した項目をサンプルのアプリ
ケーションをモデルに解説しました。
Realm自体の機能スピードが
早いとの事ですが、
Realmを実施する手順、メソッドの種類、
コードの可読性などが良い、
作業効率が良いと思いました。
経験の少ない開発者でもRealmを通じて、
プログラミングを学び、
早い成長が出来るFrameWorkと
感じております。
Thank you Realm !!!