gpt4 book ai didi

Swift - 获取 Realm 对象的父对象;总是空的

转载 作者:行者123 更新时间:2023-11-28 06:27:09 25 4
gpt4 key购买 nike

我有一段关系:

A Parent has many 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 读取工厂并在 for 循环中手动创建子(引擎),类似于此:

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
}
}

理想情况下,我希望能够访问 parent 的数据;比如 parent 的名字,也许是费用等等。

我试过重置模拟器并删除派生数据;但无论我做什么,结果总是 N/A 或空的。

如何查询给定的元素并确保可以抓取父数据?

非常感谢

最佳答案

事实证明,我必须解决许多问题才能解决这个问题。

我使用的是 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)
    }
    }

关于Swift - 获取 Realm 对象的父对象;总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com