文書を使用して、レルム(Java)のデータベース(RealmObjects)


文書を使用して、レルム(Java)のデータベース(ディレクトリ)

4.1自動更新オブジェクト

RealmObjectsリアルタイムでは、自動的にデータの基礎となるビューを更新することができます。あなたは、オブジェクトを更新する必要はありません。オブジェクトへの変更はすぐにクエリ結果に反映されています。

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        Dog myDog = realm.createObject(Dog.class);
        myDog.setName("Fido");
        myDog.setAge(1);
    }
});
Dog myDog = realm.where(Dog.class).equalTo("age", 1).findFirst();

realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        Dog myPuppy = realm.where(Dog.class).equalTo("age", 1).findFirst();
        myPuppy.setAge(2);
    }
});

myDog.getAge(); // => 2

これは、高速で効率的な維持するために、レルムを行い、また、あなたのコードをより簡単にする、より応答性ではないだけ。あなたの活動や断片が特定に結び付けられている場合RealmObjectRealmResults、インスタンス、あなたはUIを更新する前にリフレッシュまたは再取得それらを心配する必要はありません。

あなたは購読することができレルム通知をデータレルムを更新する際に知っています。

4.2カスタムオブジェクト

ほとんどのようなPOJOそれを用いましたRealmObjectRealmObjectあなたのクラスを展開します。あなたは、公共の場にこれらのフィールドを使用することができ、代わりにセッターとゲッターの単純な代入を使用することができます。

public class Dog extends RealmObject {
    public String name;
    public int age;
}

あなたは他のクラスの犬と同じように使用することができます:あなたは(検証のために、例えば)getterメソッドとsetterメソッドにロジックを追加することができます、また必要な任意のカスタムメソッドを追加することができます。

レルムにDogオブジェクトに、CreateObjectのかcopyToRealmメソッドを使用してください。

realm.executeTransaction(new Realm.Transaction() {
    @Overrride
    public void execute(Realm realm) {
        Dog dog = realm.createObject(Dog.class);
        dog.name = "Fido";
        dog.age  = 5;
    }
};

4.3 RealmModelインタフェース

あなたのクラスはRealmObjectを継承し、実装することでする必要はありませんRealmModelのインタフェースを追加@RealmClassするノートを:

@RealmClass
public class User implements RealmModel {

}

このインタフェースRealmObjectのすべてのメソッド利用可能な静的メソッドで使用することができます。継承に注意してくださいRealmObjectクラスは必要ありません@RealmClassノートをや実装をRealmModel

// 使用 RealmObject
user.isValid();
user.addChangeListener(listener);

// 使用 RealmModel
RealmObject.isValid(user);
RealmObject.addChangeListener(user, listener);

4.4 JSON

あなたは、レルムのJSONオブジェクトRealmObjectにマップを追加することができます。JSONオブジェクトは、文字列、することができJSONObjectのInputStreamレルムはRealmObjectはJSONで未定義任意のプロパティを無視します。Realm.createObjectFromJsonを添加することによって、単一のオブジェクト、およびオブジェクトのリストを追加[Realm.createAllFromJson] [API / IO /レルム/ Realm.html#createAllFromJson-のjava.lang.Class-java.lang.String-)。

// 代表城市的RealmObject
public class City extends RealmObject {
    private String city;
    private int id;
    // getters and setters left out ...
}

// 从字符串插入
realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        realm.createObjectFromJson(City.class, "{ city: \"Copenhagen\", id: 1 }");
    }
});

// 使用InputStream插入多个items
realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        try {
            InputStream is = new FileInputStream(new File("path_to_file"));
            realm.createAllFromJson(City.class, is);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
});

JSONオブジェクトのフィールドがnull、および必要なフィールドRealmModelある場合は、レルムは例外をスローします。あなたがオブジェクトを作成し、デフォルトのフィールドに値を設定すると、フィールドはオプションである場合は、そのオブジェクトの更新時とnullにその値を設定します。JSONオブジェクトRealmModelは何のフィールドでない場合は、値がRealmModelで変わりません。

4.5アダプタアダプタ

レルムから支援する抽象ユーティリティクラスを提供OrderedRealmCollectionsRealmResultsおよびRealmListUIウィジェットの標準データにバインドされ、このインタフェースを実装します)。

アダプターを使用するには、アプリケーションレベルのbuild.gradleに追加の依存関係をプラグ:

dependencies {
    compile 'io.realm:android-adapters:2.1.1'
}

あなたはできますここで、アダプタのドキュメントを見つけると、どこその使用例を見つけること。

4.6意図インテント

そのためRealmObjects実装されていませんParcelableので、直接送信することはできないので、あなたが使用されているオブジェクトの識別子を渡す必要があります。オブジェクトが主キーを持っている場合たとえば、マスターキーはテントエクストラバンドルに渡されます。

// 假设我们在'id'字段上有一个带有主键的用户类...
Intent intent = new Intent(getActivity(), ReceivingService.class);
intent.putExtra("person_id", person.getId());
getActivity().startService(intent);

主キー値は、受信側バンドル(活動、サービス、IntentService、BroadcastReceiverなど)から取得し、次にクエリレルムRealmObjectを開いています。

// in onCreate(), onHandleIntent(), etc.
String personId = intent.getStringExtra("person_id");
Realm realm = Realm.getDefaultInstance();
try {
    Person person = realm.where(Person.class).equalTo("id", personId).findFirst();
    // do something with the person ...
} finally {
    realm.close();
}

他のスレッドにレルムを再度開き、オーバーヘッドが非常に小さいです。

あなたは「渡されたオブジェクト」の一部のスレッドの例を見つけることができます作業の例をこの例が示すあなたがIDを渡すと、一般的な使用例でRealmObjectアンドロイドを取得する方法について説明します。

公開された59元の記事 ウォン称賛88 ビュー190 000 +

おすすめ

転載: blog.csdn.net/geofferysun/article/details/105102191