42
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

KIT AppDeveloperAdvent Calendar 2015

Day 5

iOS,Android共通で使えるデータベースRealm

Last updated at Posted at 2015-12-04

本記事は[KIT AppDeveloper Advent Calendar 2015]の5日目の記事です。
普段iOS,Androidのコードを開発することが多く、話題になっているモバイルデータベースについて書きます。

iOSとAndroid標準のデータベースは取っ掛かりにくい

iOS:CoreData, Android:SQLiteと標準のデータベースがありますが、プログラミング初心者からすると何かと取っ掛かりにくいと思います。
そこでCoreData,SQLiteよりもっと簡単かつ高速なデータベースが話題になっています。

今話題のモバイルデータベースRealm

Realm
Realm meetup 忘年会 + LT大会があったり、盛んに開発が行われています。
まだバージョンが1.0になっていないため、バージョンアップ時に記述方法が変わったりもしますがより使いやすくなっていくと思います。

RealmはObjective-C,Swift,Javaの各言語をサポートしていて、iOS,Androidでコードが似ています。
そのため、Android版をすでに作っていてiOS版も作ってみたい(またはその逆)時に手軽に開発することができます。

デモ

iOS Android
iOS Android

簡単なサンプルコード

Userというモデルと、その追加・取得についてのサンプルコードを書いています。
下記のコードを見ると、iOS,Androidでのコードが似ていることがわかると思います。

Userモデル

iOS

User.swift
class User: Object {

    dynamic var id = 0
    dynamic var name = ""

    override static func primaryKey() -> String? {
        return "id"
    }
    
}

Android

User.java
public class User extends RealmObject {

    @PrimaryKey
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Userの追加

iOS

ViewController.swift
let user = User()
user.id = 1
user.name = "hoge"

let realm = try! Realm()
try! realm.write {
    realm.add(user)
}

Android

MainActivity.java
User user = new User();
user.setId(1);
user.setName("hoge");

Realm realm = Realm.getInstance(this);
realm.beginTransaction();
realm.copyToRealm(user);
realm.commitTransaction();

Userの全取得

iOS

ViewController.swift
let realm = try! Realm()
let result = realm.objects(User)

Android

MainActivity.java
Realm realm = Realm.getInstance(this);
RealmResults<User> result = realm.where(User.class).findAll
42
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?