2017-02-07 5 views
1

Вот мой код, в котором я хочу поменять дочерние объекты (отправления и назначения) в Realm:своп элементы внутри Realm Object

class TrainSearchOptions: Object { 
    dynamic var origin: Station? 
    dynamic var destination: Station? 
    dynamic var date: Date? 

    func swapPlaces() { 
     guard origin != nil && destination != nil else { 
      fatalError() 
     } 

     swap(&origin!, &destination!) 
    } 
} 

Но это выходит из строя. Есть идеи?

+0

Не могли бы вы предоставить более подробную информацию о крахе? – bdash

ответ

0

Вам необходимо сделать это в транзакции Realm write.

do { 
     try realm.write { 
      swap(&origin!, &destination!) 
     } 
    } catch let error as NSError { 
     print(error) 
    } 
} 
+0

Не обязательно, вы можете обновить объект области вне транзакции записи. Транзакция необходима только при добавлении/удалении/обновлении объекта. –

+0

Это сработало. –

+0

Извините, мой плохой. Я был совершенно не прав, поскольку мой комментарий был прав только при работе с неуправляемыми объектами. –

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