Предоставляет ли Realm поддержку для сохранения сторонних парцелярных объектов (например, класса MarkerOptions из Maps API)?Возможно ли сохранение постоянных сторонних объектов в царстве?
Итак, я создаю приложение для планирования маршрутов для Android, и мне нужно сохранить список объектов LatLng, MarkerOptions и Polyline из API Карт, и все они реализуют Parcelable. Я думал, что попробую Realm, чтобы сохранить список объектов.
Я читал о поддержке библиотеки Parceler в Realm и пытался сохранить класс Parcelable, который содержит объект LatLng в Realm.
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
Я также попытался добавить эту аннотацию по указанию Realm documention
@Parcel(implementations = { SavedLocationRealmProxy.class },
value = Parcel.Serialization.BEAN,
analyze = { SavedLocation.class })
public class SavedLocation extends RealmObject{
...
Однако SavedLocationRealmProxy не получает создается за счет ограждающих LatLng класс.
Является ли поддержка Parceler только предоставленной, чтобы сделать RealmObjects неотъемлемыми или Возможные Объекты, сохраняющиеся в Царстве?
Спасибо ..
Сделайте обходной путь: создайте свой собственный класс посылок, который содержит двойники, представляющие широту/долготу. Поскольку LatLng не поддерживается, вы всегда можете обойти это со своим собственным классом, хотя он кажется интуитивным, просто назовите его как MarkerOptionsEntity. Теперь вы работаете с типом сопоставления DTO/Entity модели, который не слишком завышен. –
Просто потому, что класс реализует 'Parcelable', не означает, что он может быть сохранен через Realm или любым другим способом. Единственной целью «Parcelable» является возможность размещения экземпляров в «Parcel» для IPC. – CommonsWare
Вы можете только сохранить 'RealmObject' в 'Realm'. Вам понадобятся ваши собственные классы «RealmLatLng», «RealmMarkerOptions» и «RealmPolyline», каждый из которых «расширяет RealmObject», а затем вам нужно будет сопоставить между двумя типами классов. – EpicPandaForce