2015-11-08 3 views
2

Вы можете создать объект области во время миграции? Я хочу извлечь часть существующего объекта realm и создать новый объект с этими данными, но миграция всегда зависает. Вот мой код переносаСоздайте объект realm во время миграции области

private class var migrationBlock: MigrationBlock { 
    return { migration, oldSchemaVersion in 
     if oldSchemaVersion < 1 { 
      print("Shema Version 0") 
      migration.enumerate(Transaction.className(), { (oldObject, newObject) -> Void in 
       let oldDate = oldObject!["date"] as! NSDate 
       let newTransactionDate = TransactionDate() 
       newTransactionDate.date = oldDate 
       try! Realm.getRealm().write { Realm.getRealm().add(newTransactionDate, update: true) } 
       newObject!["_date"] = newTransactionDate 
      }) 
     } 
    } 
} 

ответ

4

Вы можете использовать Migration.create(_:value:) создать объект во время миграции.

https://realm.io/docs/swift/latest/api/Classes/Migration.html#/s:FC10RealmSwift9Migration6createFS0_FTSS5valuePSs9AnyObject__CS_13DynamicObject

возвращает экземпляр MigrationObject «s. Поэтому вы должны использовать подписку для присвоения значения своему свойству.

let oldDate = oldObject!["date"] as! NSDate 

let newTransactionDate = migration.create(TransactionDate.className()) 
newTransactionDate["date"] = oldDate 

newObject!["_date"] = newTransactionDate 
Смежные вопросы