我的代码:
AppCFG appCFG = new AppCFG();
if(jsonToParse != null) {
Realm realm = Realm.getInstance(AppController.getInstance());
appCFG.setOid(ParserJsonMethods.getOid(jsonToParse));
appCFG.setBaseResourceUrl(jsonToParse.optString(AppCFGContract.BASE_RESOURCE_URL));
appCFG.setClientName(jsonToParse.optString(AppCFGContract.CLIENT_NAME));
appCFG.setBucketName(jsonToParse.optString(AppCFGContract.BUCKET_NAME));
appCFG.setConfigUpdatedOn(StringConvertions.stringDateToMillis(jsonToParse.optString(AppCFGContract.CONFIGURATION_UPDATED_ON)));
appCFG.setDefaultOutputVideoMaxFps(jsonToParse.optInt(AppCFGContract.DEFAULT_OUTPUT_VIDEO_MAX_FPS));
appCFG.setLatestPackagePublishedOn(StringConvertions.stringDateToMillis(jsonToParse.optString(AppCFGContract.LATEST_PACKAGE_PUBLISHED_ON)));
appCFG.setOnboardingPassed(jsonToParse.optBoolean(AppCFGContract.ONBOARDING_PASSED));
appCFG.setOnboardingUsingPackage(jsonToParse.optString(AppCFGContract.ONBOARDING_USING_PACKAGE));
appCFG.setPrefferedFootageOID(jsonToParse.optString(AppCFGContract.PREFFERED_FOOTAGE_OID));
appCFG.setTweaks(jsonToParse.optString(AppCFGContract.TWEAKS));
appCFG.setUploadUserContent(jsonToParse.optString(AppCFGContract.UPLOAD_USER_CONTENT));
appCFG = parseMixedScreen(appCFG, jsonToParse);
realm.beginTransaction();
realm.copyToRealmOrUpdate(appCFG);
realm.commitTransaction();
拉取所有结果的结果:
所有字段都是空的..但不知何故json附加到对象..我做错了什么?
编辑: 当我在拉出所有结果并打开此结果(图像的结果)之后执行result.getBaseResourceUrl()时,我得到了一个很好的答案:http://blah.blah。但是当我试图从baseResourceUrl =“http://blah.blah”获得领域的结果时,我什么都没有回来......
答案 0 :(得分:1)
Realm使用零拷贝架构和代理对象。这意味着您的所有数据始终保存在C ++内部存储引擎中,而不是实际复制到Java。这也意味着Realm并没有真正使用Java变量,因此当通过调试器查看它们时它们总是具有未初始化的值(null
表示对象,0
表示整数,{{1对于字符串)
您可以看到您的对象真的是""
。这个代理类的作用是覆盖所有getter和setter,以便用C ++而不是Java来访问数据。因此,如果您使用普通的getter,您可以访问您的数据。代理还会创建一个正确的toString()方法,这就是弹出窗口显示正确输出的原因。