2017-01-07 1 views
1

У меня есть отношения, где:Swift - получить родителя объекта Realm; Всегда пустой

Parent имеет много Children

т.е.:

class Factory: Object { 
public let engines = List<Engine>() 
} 

class Engine:Object { 
private let parents:LinkingObjects<Factory> = LinkingObjects(fromType: Factory.self, property: "engines") 
    var parent:Factory? { 
     return self.parents.first 
    } 
} 

Я прочитал заводы через JSON и создать детей (Двигатель) вручную в замкнутом контуре, аналогично этому:

var engines:[Engine] = [Engine]() 
for _ in stride(from:0, to: 3, by: 1) { 
let engine: Engine = Engine.init() 
engines.append(engine) 
} 
return engines 

В моем тесте я хочу запросить родителя данного движка, чтобы убедиться, что родитель правильно; или, возможно, получить родительский атрибут.

Однако, когда я пытаюсь захватить атрибут через родительский элемент, он всегда пуст;

for (_, element) in (factories.enumerated()) { 
    for (_, eng) in element.engines.enumerated() { 
    print (eng.parent ?? "N/A" as Any) // Always prints out N/A 
    } 
} 

В идеале, я хочу иметь доступ к данным родителя; например, имя родителя, возможно, расходы и т. д.

Я попытался сбросить симулятор, а также удалить производные данные; но независимо от того, что я делаю, результаты всегда N/A или пустые.

Как я могу запросить данный элемент и убедиться, что я могу захватить родительские данные?

Большое спасибо

+1

Первое, что я хотел бы использовать приложение браузера Realm, чтобы увидеть, если объекты и отношения корректно сохраняются в БД Realm. –

+0

Я попытаюсь использовать приложение браузера Realm, чтобы сделать то, что вам нужно. Дело в том, что я использую область XCTest, а Realm устанавливается как встроенная память. Я могу отключить его и попробовать в любом случае. – zardon

+0

Большое спасибо, я смог убедиться, что я не писал никаких объектов в память; также было много других ошибок и проблем, связанных с XCTest, которые я не ожидал и должен был их исправить. Я видел, что данные записываются в браузере области, но заметил, что там много данных, когда я знаю, что должно быть определенное число. Я буду исследовать дальше в свое время. – zardon

ответ

1

Оказывается, есть целый ряд вопросов, которые я должен был сделать, чтобы решить эту проблему.

Я использовал XCTest и Realm, вызывая проблемы, когда было несколько целей.

  1. Сделать все мои модели классов public
  2. Удалить модели из тестовой мишени, это включало файл, в котором данные JSON был загружен в память
  3. я должен был писать свои данные в Realm, чего я не сделал;

     let realm = try! Realm() 
    
         try! realm.write { 
          for parent:EYLocomotive in objects { 
           for _ in stride(from:0, to: parent.qty, by: 1) { 
            let engine : EYEngine = EYEngine.init() 
            parent.engines.append(engine) 
           } 
           realm.add(parent) 
          } 
         } 
    
Смежные вопросы