Раньше у меня был только один объект, в котором было все, что мне нужно. Я «перегруппировал» их и сделал отдельные объекты. Я добавил свойства с типом новых объектов в исходный объект. Как назначить старые значения свойств свойствам объекта?Как перенести старые свойства в новый объект с помощью Realm Swift
Вот код для моих объектов:
class MainObject: Object {
dynamic var id: Int = 0
// Schema 0
dynamic var otherId: Int = 0
dynamic var otherStr: String = ""
dynamic var anotherId: Int = 0
dynamic var anotherD: Double = 0.0
dynamic var anotherText: String = ""
// Schema 1
dynamic var otherObjectVar: OtherObject?
dynamic var anotherObjectVar: AnotherObject?
}
// Schema 1
class OtherObject: Object {
dynamic var id: Int = 0
dynamic var str: String = 0
}
class AnotherObject: Object {
dynamic var id: Int = 0
dynamic var d: Double = 0.0
dynamic var text: String = ""
}
(Изменены имена переменных)
Я пытался использовать convenience init(){}
, но это не сработало. Я также попытался назначить экземпляр объекта для newObject, но это тоже не сработало. Вот что код для более легкого понимания:
let other = OtherObject()
other.id = 0
other.str = oldObject["otherStr"] as! string
newObject["otherObjectVar"] = other
Как я могу перенести старые свойства в новое свойство, которое является другим объектом?
EDIT: Временно, я решил его с
let obj = migration.create(MainObject.className())
migration.delete(obj)
, но я не думаю, что это правильное решение. Поэтому, если у кого-то есть решение для этого, я был бы признателен.
Да, я делаю это миграция схемы. Я попробовал ваш ответ, но я получаю эту ошибку: «Значение типа« MigrationObject »(иначе« DynamicObject ») не имеет идентификатора участника.« Объект имеет поле id, поэтому он не должен показывать ошибку. – Dan
Это должно быть 'other [" id "]' и 'other [" str "]'. Причина, по которой вы получаете сообщение об ошибке @Daniel, заключается в том, что объекты Realm в блоке миграции не являются вашими типизированными моделями (которые, очевидно, не будут работать при работе с объектами из старых версий схемы, чьи типизированные модели больше не существуют). – jpsim
Я обновил ответ, чтобы отразить это. Теперь это должно быть правильно. – jpsim