करने का सही तरीका हम अपने ऐप के लिए रियलम का उपयोग करते हैं। हमारा ऐप बीटा जारी किया गया है। अब मैं अपने क्षेत्र वस्तुओं में से एक में एक फ़ील्ड जोड़ना चाहता हूं। तो मुझे रियलमैमिशन लिखना पड़ा और मैंने भी एक लिखा। यहां प्रश्न यह है कि मेरे ऐप पर इस रीयल माइग्रेशन को कैसे लागू किया जाए। मैं Realm.getInstance() का उपयोग वास्तविकता उदाहरण प्राप्त करता हूं जब भी मैं कुछ चाहता हूं। याद रखें, हर समय पूरे ऐप में Realm.getInstance() का उपयोग किया जा रहा है, मैं रियलम डेटाबेस तक पहुंचना चाहता हूं।रीयल माइग्रेशन एंड्रॉइड
तो, मुझे इस माइग्रेशन को कैसे लागू करें इस पर थोड़ा सा सवाल है? कोई भी लीड सहायक हो सकती है। धन्यवाद।
मेरा रियलम माइग्रेशन निम्नानुसार है।
public class RealmMigrationClass implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
if(oldVersion == 0) {
RealmSchema sessionSchema = realm.getSchema();
if(oldVersion == 0) {
RealmObjectSchema sessionObjSchema = sessionSchema.get("Session");
sessionObjSchema.addField("isSessionRecordingUploading", boolean.class, FieldAttribute.REQUIRED)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("isSessionRecordingUploading", false);
}
});
sessionObjSchema.setNullable("isSessionRecordingUploading",false);
oldVersion++;
}
}
}
}
public class Session extends RealmObject {
@PrimaryKey
private String id;
@Required
private Date date;
private double latitude;
private double longitude;
private String location;
private String note;
private String appVersion;
private String appType;
private String deviceModel;
private HeartRecording heart;
private TemperatureRecording temperature;
private LungsRecording lungs;
@NotNull
private boolean isSessionRecordingUploading;
private boolean sessionInfoUploaded;
private boolean lungsRecordingUploaded;
private boolean heartRecordingUploaded;
}
लघु प्रश्न कटौती करने के लिए RealmObject से मनुष्य और Setters निकाला गया। अपवाद तब हुआ जब मैं पिछले एक को अनइंस्टॉल किए बिना ऐप को पुनर्स्थापित करने का प्रयास करता हूं। कृपया सलाह दें।
धन्यवाद ईसाई। अगर मेरी समझ सही है, तो मॉडल में नया बनाया गया फ़ील्ड होगा और सभी Realm.getInstance (यह) Realm.getInstance (ऊपर की तरह बनाया गया कॉन्फ़िगरेशन> होगा) – User
हाँ, यह सही है। आपको 'Realm.getDefaultInstance()' या 'Realm.getInstance (RealmConfiguration) 'का उपयोग' Realm.getInstance (Context)' के बजाय करना चाहिए। –
आज मैंने कोशिश की, मुझे "io.realm.exceptions.RealmMigrationNeededException: Field 'isessionRecordingUploading' मौजूदा दायरे फ़ाइल में शून्य मानों का समर्थन करता है। फ़ील्ड 'isSessionRecordingUploading' के लिए संबंधित बॉक्स किए गए प्रकार का उपयोग करें या io.realm.internal.Table का उपयोग करके माइग्रेट करें .convertColumnToNotNullable() "। मैंने रीयलमैमिशन क्लास को थोड़ा सा संशोधित किया और मेरे दायरे ऑब्जेक्ट में फ़ील्ड में पूर्ण एनोटेशन नहीं जोड़ा। लेकिन फिर भी मैं इस मुद्दे को दूर नहीं कर सका। मैंने Q. – User