0

Realm は、サードパーティの Parcelable オブジェクト (Maps API の MarkerOptions クラスなど) を保持するためのサポートを提供していますか?

だから、私は Android 用のルート計画アプリを構築しており、Maps API からの LatLng、MarkerOptions、Polyline オブジェクトのリストを永続化する必要があります。これらはすべて Parcelable を実装しています。オブジェクトのリストを永続化するために Realm を試してみようと思いました。

Realm でのParcelerライブラリのサポートについて読み、Realm で LatLng オブジェクトを含む Parcelable クラスを永続化しようとしていました。

import io.realm.RealmObject;
import io.realm.SavedLocationRealmProxy;

@Parcel
public class SavedLocation extends RealmObject{

private String locationName;
private LatLng location;
private String areaName;

public SavedLocation() {
}

public SavedLocation(String locationName, LatLng location) {
    this.locationName = locationName;
    this.location = location;
}

public SavedLocation(String locationName, LatLng location, String areaName) {
    this.locationName = locationName;
    this.location = location;
    this.areaName = areaName;
}

...

このエラーでコンパイルが完了しません

Error:(7, 8) error: Type com.google.android.gms.maps.model.LatLng of field location is not supported

また、レルムのドキュメントの指示に従って、この注釈を追加しようとしました

@Parcel(implementations = { SavedLocationRealmProxy.class },
    value = Parcel.Serialization.BEAN,
    analyze = { SavedLocation.class })
public class SavedLocation extends RealmObject{
...

ただし、LatLng クラスが含まれているため、SavedLocationRealmProxy は作成されません。

Parceler のサポートは、RealmObjects をパーセル化できるようにするためだけに提供されているのでしょうか?それとも、Parcelable オブジェクトを Realm で永続化できるのでしょうか?

ありがとう..

4

1 に答える 1

0

Parceler からのサポートにより、RealmObjects を Intents/etc に分割することができます (CommonsWare がコメントで指摘したように)。RealmObjects が分割されると、Realm オブジェクトは Realm から切断されることに注意してください。

なぜこのエラーが発生するのですか?

LatLng は拡張されませんRealmObject。したがって、Realm に保存することはできません。LatLng オブジェクトを保存するには、独自の LatLng オブジェクト (などMyLatLng) を作成し、それらをマッピングする必要があります。

Realm を使用したジオ ポイントの良い例を探している場合は、https ://github.com/thorbenprimke/realm-mapview で Thorben Primke の realm-mapview の例を確認してください。

関連する注記では、Realms ジオポイントのサポートはここで追跡できます: https://github.com/realm/realm-java/issues/1772

于 2016-01-19T23:31:07.370 に答える