2016-05-24 4 views
1

Общий вопрос об интеграции Королевства с существующим проектом. Другая структура, которую я имею, имеет класс User, который имеет кучу свойств. Есть ли в любом случае Realm, что я могу просто сохранить этот объект, не создавая полностью новую модель Realm и копируя значения из свойств User в новую модель Realm?Использование Realm с существующим классом?

Могу ли я сделать что-то вроде этого?

class RealmUser: Object { 
    dynamic user: User? 
} 

Хотя пользователь не является моделью, определяемой положением.

Спасибо.

ответ

2

Realm поддерживает только следующие типы недвижимости: Bool, Int8, Int16, Int32, Int64, Double, Float, String, NSDate и NSData.

Таким образом, вы не можете просто добавить свой объект User в Царство. Если ваш класс User реализует NSCoding, вы можете преобразовать объект User в объект NSData и сохранить его, но вы потеряете возможность запрашивать свойства User, поэтому ИМХО это нецелесообразно.

Если вы действительно хотите использовать Realm, я думаю, что нет другого способа создать объект RealmUser со всеми свойствами класса User. Вы можете добавить удобство инициализатору, что делает создание RealmUser объектов проще в других частях коды базы:

class RealmUser: Object { 
    dynamic var userId = 0 
    dynamic var name = "" 
    ... 

    convenience init(withUser user: User) { 
     self.init() 
     userId = user.id 
     name = user.name 
     ... 
    } 
} 

Это не столь короткое и практично, как ваше решение будет, но добавление пользовательских классов для Realm просто невозможно.

+0

Спасибо за ваше решение. Имеет смысл. Так вы предлагаете идти об этом с помощью Realm? Или другие рамки, которые поддерживают то, что мне нужно? И если последнее, какие рамки вы бы предложили? –

+1

Лично я использовал Realm сейчас в нескольких проектах, и мне это очень нравится. Я сомневаюсь, что есть база данных, которая поддерживает сохранение пользовательских объектов из коробки, но дайте мне знать, если вы ее найдете. – joern

+0

Конечно, звучит хорошо. Еще раз спасибо. –

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