我尝试与Realm合作。 Init Realm还可以,但是当我创建对象并插入(或更新)数据库时,它可能无法正常工作。我检查了一些命令,看到没有更新,只插入行。
这就是我所做的:
Application.class onCreate();
Realm.init(this);
RealmConfiguration configuration = new RealmConfiguration.Builder()
.name("MoneySaver.realm")
.build();
Realm.setDefaultConfiguration(configuration);
在MainActivity.class onCreate();
realm = Realm.getDefaultInstance();
然后我开始尝试添加新对象
realm.beginTransaction();
int nextID = (int) (realm.where(Transaction.class).max("id").intValue() + 1);
Transaction transR = realm.createObject(Transaction.class, nextID);
transR.setMoney(100000);
transR.setNote("test realm object");
realm.commitTransaction();
这是Transaction对象的标题
public class Transaction extends RealmObject{
@PrimaryKey
private int id;
private int category_id;
private int wallet_id;
private String note;
private double money;
private String created_at;
我试着调试一下。在调用commitTransaction()之前和之后,仍未设置所有值
然后我使用Chrome检查数据库。这里没有什么。即使在realm.where(Transaction.class).findAll()
我看到了6行。
答案 0 :(得分:0)
这就是领域的运作方式 您应该向领域添加交易清单
Transaction transR = new Transaction();
transR.setMoney(100000);
transR.setNote("test realm object");
List<Transaction> transaction = new ArrayList<Transaction>();
transaction.add(transR);
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.copyToRealmOrUpdate(transaction);
realm.commitTransaction();
realm.close();
检查并告诉我
答案 1 :(得分:0)
我认为你从未真正安装过Stetho-Realm:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(RealmInspectorModulesProvider.builder(this).build()) // <-- add this
.build());
}
}
答案 2 :(得分:0)
realm.copyToRealmOrUpdate(relamMediaModel)将完成这项工作
尝试
realm.beginTransaction();
Transaction transR = new Transaction();
transR.setMoney(100000);
transR.setNote("test realm object");
realm.copyToRealmOrUpdate(transR );
realm.commitTransaction();
realm.close();