我使用Android Studio 1.2.2和Realm 0.81.1。 我创建了一个Model' Category'如下:
@RealmClass
public class Category extends RealmObject {
private String name;
// getter and setter
}
但我得到了 java.lang.IllegalArgumentException:Category不是此Realm
的架构的一部分我甚至启用了注释处理,但错误仍然存在。
如何解决此错误?非常感谢任何帮助。
更新
我深入研究了Realm代码。我在Util.class文件中找到了
if(!superclass.equals(RealmObject.class)) {
clazz = superclass;
}
正在检查我正在使用的模型的超类。当我打印出超级模式时;我自己,像:
category.getClass().getSuperclass().getName();
我正在接受' io.realm.RealmObject'它不等于RealmObject.class。因此,Realm可能不会将其视为RealmObject。
这可能是导致错误的原因吗?
答案 0 :(得分:3)
就我而言,我需要在每个使用realm的.gradle项目中添加realm插件(apply plugin:'realm-android')。 RealRecyclerView和我的主应用程序项目。
答案 1 :(得分:2)
我发现应用程序的build.gradle文件中指定插件的顺序很重要。在我的情况下,我有应用插件:'realm-android'在其中,但显然它是太早指定。把它放在最后工作。
这失败了。
apply plugin: 'com.android.application'
apply plugin: 'realm-android'
apply plugin: 'android-apt'
apply plugin: 'com.neenbedankt.android-apt'
然而这有效(注意真实的机器人是最后的)。
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'realm-android'
答案 2 :(得分:1)
我不知道你是否还有这个问题,但在我身边,我只是清理项目并再次构建。之后工作正常......请注意我有android studio作为ide。
答案 3 :(得分:0)
在我的情况下,我有两个一对多的关系。两类关系在不同的模块中。这导致了错误。当我把它们放在同一个模块中时它起作用了。这是来源的相关部分:
public <E extends RealmModel> E copyOrUpdate(Realm realm, E obj, boolean update, Map<RealmModel, RealmObjectProxy> cache) {
// This cast is correct because obj is either
// generated by RealmProxy or the original type extending directly from RealmObject
@SuppressWarnings("unchecked") Class<E> clazz = (Class<E>) ((obj instanceof RealmObjectProxy) ? obj.getClass().getSuperclass() : obj.getClass());
if (clazz.equals(Buddy.class)) {
return clazz.cast(BuddyRealmProxy.copyOrUpdate(realm, (Buddy) obj, update, cache));
} else {
throw getMissingProxyClassException(clazz);
}
}