読者です 読者をやめる 読者になる 読者になる

Realmの書き込み / 読み込み

Realmとは

 モバイル向けに作られた軽量なNoSQL Database
 Java / Objective-C / JavaScript / Swift / Xamarin などに対応。
 OSSであり、完全無料で使用できる。

 
realm.io

NoSQLデータベース環境とは、
幅広い種類の膨大な量のデータを高速かつ動的に整理し分析することを可能にする、
非リレーショナルな広域分散データベースシステムです。

NoSQLデータベース ― 定義と解説 | DataStax Academy: Free Cassandra Tutorials and Training

Realmのメリット

Realmの導入方法

CocoaPodsかCarthageを使用します。
公式のドキュメントを下記に載せておきますのでそちらを参照ください。(日本語ドキュメントの最新)
Realm Swift 2.1.2

RealmDBの使い方(Swift)

前提条件

Realmを使いたい各ソースファイルの先頭に

import RealmSwift

と記述してください。

データクラス

//
//  TestData.swift
//  

import UIKit
import RealmSwift

class TestData: Object {
    
    // 名前.
    dynamic var name = String()
    // 年齢.
    dynamic var age = Int()
    // 出身地.
    dynamic var graduate = String()
    
}

書き込み

// RealmDBが保存されているパスの取得.
let libraryPath = NSHomeDirectory() + "/Library"
let filePath =  NSURL(fileURLWithPath: libraryPath + "/Test.realm")
        
// Realmインスタンスの作成.
let realm = try! Realm(fileURL: filePath as URL)
        
// 書き込むデータ.
let testData = TestData()
testData.name = '西野カナ'
testData.age = 28
testData.graduate = '三重県'
        
// 書き込み.
try! realm.write {
  realm.add(profitData)
}
  

読み込み

// RealmDBが保存されているパスの取得.
let libraryPath = NSHomeDirectory() + "/Library"
let filePath =  NSURL(fileURLWithPath: libraryPath + "/Test.realm")
        
// Realmインスタンスの作成.
let realm = try! Realm(fileURL: filePath as URL)
                
// オブジェクトの取得.
let objs = realm.objects(TestData.self)

var name = ''
var age = 0
var graduate = ''
if let obj = objs.last {
  name = obj.name
  age = obj.age
  graduate = obj.graduate
}

print("RealmDB 取得内容")
print("name : " + name)
print("age : \(age)歳")
print("graduate : " + graduate)

// RealmDB 取得内容
// name : 西野カナ
// age : 28歳
// graduate : 三重県  


///
/// データの読み込み(取得条件あり).
///

// RealmDBが保存されているパスの取得.
let libraryPath = NSHomeDirectory() + "/Library"
let filePath =  NSURL(fileURLWithPath: libraryPath + "/Test.realm")
        
// Realmインスタンスの作成.
let realm = try! Realm(fileURL: filePath as URL)
                
// 取得条件の作成.
let predicate = NSPredicate(format: "name == %@",'西野カナ')

// オブジェクトの取得.
let objs = realm.objects(TestData.self).filter(predicate)

var name = ''
var age = 0
var graduate = ''
if let obj = objs.last {
  name = obj.name
  age = obj.age
  graduate = obj.graduate
}

print("RealmDB 取得内容")
print("name : " + name)
print("age : \(age)歳")
print("graduate : " + graduate)

// RealmDB 取得内容
// name : 西野カナ
// age : 28歳
// graduate : 三重県  

更新

// RealmDBが保存されているパスの取得.
let libraryPath = NSHomeDirectory() + "/Library"
let filePath =  NSURL(fileURLWithPath: libraryPath + "/Test.realm")
        
// Realmインスタンスの作成.
let realm = try! Realm(fileURL: filePath as URL)
                
let objs = realm.objects(TestData.self)
let obj = objs.last

// オブジェクトの更新.
try! realm.write {
  obj.name = '西島隆弘'
  obj.age = '30'
  obj.graduate = '北海道'
}

削除

// オブジェクトの削除
try! realm.write {
  realm.delete(obj)
}

// 全オブジェクト削除
try! realm.write {
  realm.deleteAll()
}