2015-03-23 1 views
10

Я следующий классУстановить значение объекта царств

public class Student extends RealmObject{ 
private int studentID; 
private String studentName; 

// getters and setters here 

} 

Тогда я пытаюсь установить значение для уже созданного студенческого объекта

student.setStudentName("Peter"); 

Затем я получаю следующее сообщение об ошибке

java.lang.IllegalStateException: вызов метода Mutable во время чтения транзакция.

Чтобы преодолеть это, я должен сделать это следующим образом

Realm realm = Realm.getInstance(this); 
realm.beginTransaction(); 
student.setStudentName("Peter"); 
realm.commitTransaction(); 

Я не хочу, чтобы это изменение сохраняется в базе данных. Как я могу просто установить/изменить значение для переменной объекта realm, не сохраняя ее всегда в базе данных?

ответ

4

Когда вы используете Realm.createObject(), объект добавляется в Царство и работает только в транзакции записи. Вы можете отменить транзакцию и тем самым отказаться от объекта.

Кроме того, вы можете использовать класс модели как отдельный класс и создавать объекты в памяти (см. http://realm.io/docs/java/0.80.0/#creating-objects). Если вам нужно сохранить объекты, вы можете использовать метод Realm.copyToRealm().

0

Вы можете использовать realm.cancelTransaction(); вместо realm.commitTransaction();

4

Если вы хотите изменить объект в не сохранялись образом, вам необходима неуправляемая копия.

Вы можете создать копию, используя метод realm.copyFromRealm(RealmObject realmObject);.

+0

Спасибо! Это сработало для меня. –

1

U может захотеть создать новую модель. И новая модель ур должна обладать RealmModel.

public class StudentRM extends RealmModel{ 
private int studentID; 
private String studentName; 

// Constructors here 
// getters and setters here 

} 

Теперь U может это сделать.

studentRm.setStudentName("Peter"); //Setting Vale Or 
studentRm.addAll(student); //Add all value from DB 
studentRm.setStudentName("Jhon"); //It won't change DB anymore 
studentRm.getStudentName(); // "Jhon" 

 Смежные вопросы

  • Нет связанных вопросов^_^