2015-09-04 3 views
2

У меня есть предварительно инициализированный файл .realm, который я пытаюсь получить в Android Studio. Я использовал браузер Realm для определения точной схемы для моделирования моих классов после (т.е. имена и типы полей), но я не могу понять, что тип Any типа поля comments (см. Снимок экрана ниже) должен быть в моем коде , Realm Browser Согласно this, поле может быть только boolean, short, ìnt, long, float, double, String, Date, byte[], подклассы RealmObject или RealmList<? extends RealmObject>. Я пробовал кучу разных типов для comments поле, но я по-прежнему получаю ошибки похожее на следующее:«Любое» поле в файле .realm

io.realm.exceptions.RealmMigrationNeededException: Invalid type 'String' for field 'comments' 

Когда я пытаюсь разрешить comments быть максимально стандартизован, сделав его тип RealmObject, мой код не может даже успешно скомпилируется:

/Users/name/AndroidStudioProjects/Project/app/build/intermediates/classes/debug/io/realm/ReportRealmProxy.java 
Error:(147, 17) error: cannot find symbol variable RealmObjectRealmProxy 
Error:(285, 48) error: cannot find symbol variable RealmObjectRealmProxy 
Error:(330, 52) error: cannot find symbol variable RealmObjectRealmProxy 
Error:(374, 41) error: cannot find symbol variable RealmObjectRealmProxy 
Error:(420, 41) error: cannot find symbol variable RealmObjectRealmProxy 

Наконец, когда я пытался использовать автоматическую генерацию коды модели Realm браузера (Файл -> Сохранить модель определение -> определение Сохранить Java ...), следующий код производится :

import io.realm.RealmObject 

public class Report extends RealmObject { 
    private String term; 
    private String year; 
    private int enrollment; 
    private Any comments; 
    private RealmList<Response> responses; 
    private RealmList<FacultyReport> facultyReports; 
} 

К сожалению, ни Android Studio, ни я не понимаю, что такое класс Any - я не могу найти никаких упоминаний об этом в Интернете.

Любая помощь будет высоко оценена, так как я не могу загрузить данные, не в точности сопоставляя определения модели, используемые для ее создания. Если бы был способ загрузить все данные, кроме класса/таблицы Report, это тоже сработало бы, потому что в настоящее время оно пусто (как показывает скриншот). Но в настоящее время, несмотря на то, что она пуста, моя неспособность моделировать это мешает мне вообще загружать объекты!

Спасибо в продвижении.

Edit: Вот мой Report.java код класса:

import io.realm.RealmList; 
import io.realm.RealmObject; 

public class Report extends RealmObject { 
    private String term; 
    private String year; 
    private int enrollment; 
    private ???? comments; 
    private RealmList<Response> responses; 
    private RealmList<FacultyReport> facultyReports; 

    public ???? getComments() { 
     return comments; 
    } 

    public void setComments(???? comments) { 
     this.comments = comments; 
    } 

    // other getters and setters removed 
} 

ответ

-1

Вы заметили, что вы можете сделать браузер создать Java-код для класса определений (смотрите в меню File)?

+0

это больше подходит как комментарий – EpicPandaForce

+0

Спасибо за ответ. Как я уже упоминал в своем вопросе, когда я использую этот параметр, Realm Browser выплевывает код с типом 'comment', который является' Any', который не является реальным классом, насколько мне известно – asaini007

+1

Просто для уточнения: я работаю для Realm :-) Тип 'Any' является неиспользуемым типом в Realm. Я действительно не понимаю, как поле 'String' может быть интерпретировано браузером как' Any'. Возможно ли вам поделиться файлом Realm, чтобы мы могли более внимательно посмотреть? – geisshirt

0

Похоже, что в Realm Swift отсутствовали несколько случаев, когда в некоторых случаях он не обнаруживал неподдерживаемые типы свойств в моделях, поэтому рассматривал его как «Любой» (a.k.a. 'mixed').

У меня есть PR фиксирующего вопрос, который в настоящее время находится на проверке: https://github.com/realm/realm-cocoa/pull/2496

Хотя мы можем изменить подход мы принимаем.

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