gpt4 book ai didi

ios - 如何在 NSManagedObject 子类中定义 Fetched 属性

转载 作者:搜寻专家 更新时间:2023-10-31 22:15:47 25 4
gpt4 key购买 nike

在我正在处理的一个项目中,我们有多个持久存储,并且在实体上定义了获取的属性,以提供对不同存储中的对象的访问。

当我运行 Editor -> Create NSManagedObject Subclass 时,获取的属性不会填充到子类中,因此在使用它的不同 Controller 中无法访问实体。

我的好奇是如何在子类中定义这些对象,以便使用。

例如,假设我下面有一些名为“Some Object”的对象,这个对象有一个名为“imageFile”的获取属性(File 对象位于不同的存储中,因此不能直接引用)

class SomeObject: NSManagedObject {

@NSManaged var name: String
@NSManaged var id: String
@NSManaged var imageID: String
@NSManaged var imageFile: File //Not generated automatically like the rest
}

不幸的是,上述尝试失败并出现以下错误:

无法识别的选择器发送到实例 0x60800865de50

所以我的问题很简单,就是如何访问 Fetched Properties,或者引用它们的语法是什么。

请不要回答说“不要使用获取的属性”或“只使用一个持久存储”。我已经知道如何使用正常关系并想知道如何利用 Core Data 的这个特性。提前致谢!

更新

尝试下面发布的一些解决方案时,我发现了一些可能有用的有趣信息。我使用“po someObject”打印出对象,并惊讶地在数据属性下的输出中看到以下内容:

imageFile = "<relationship fault: 0x618000043930 'imageFile'>";
imageID = "some Id"

但是,当尝试使用 someObject.imageFile 访问 imageFile 时,我无法访问它。使用 valueForKey["imageID"] 我可以获得一个引用,但每次都无法转换为 File。打印出对象时,我得到:

Optional(Relationship fault for (<NSFetchedPropertyDescription: 0x6180000e1780>), name imageFile, isOptional 1, isTransient 1, entity SomeObject...

最终更新

valueForKey["imageID"] 将触发错误并获取属性,我在我的 xcdatamodelid 文件中翻转了属性,这就是为什么它不是首先找到它。

最佳答案

在 Objective-C 中你可以定义一个 @dynamic 属性文件SomeObject 上的类别,但 Swift 中不存在类似的东西(据我所知)。

所以唯一的可能就是使用Key-Value编码来检索获取的属性(始终表示为数组):

if let files = yourObject.valueForKey("imageFile") as? [File] {
// ...
}

当然,您可以按照建议将其包装到计算属性中在@gutenmorgenuhu 的回答中。

关于ios - 如何在 NSManagedObject 子类中定义 Fetched 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30144638/

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