当前位置: 首页 > 面试题库 >

核心数据中具有自定义类型的所有属性都必须是一种关系吗?

伊飞光
2023-03-14
问题内容

这是下面的注释中的后续问题,该注释如何映射嵌套的复杂JSON对象并将其保存到核心数据。

想象一下,我已经为我的应用准备了这段代码

class Passenger{
    var name: String
    var number: String
    var image : UIImage
    // init method
}
class Trip {
    let tripNumber : Int
    let passenger : Passenger

    init(tripNumber: Int, passenger: Passenger) {
        self.tripNumber = tripNumber
        self.passenger = passenger
    }
}

现在,我决定为我的应用程序添加持久性。我只是
有旅行的表。我想显示出行旅客,但不需要表格直接查询旅客。这只是旅行的自定义对象/属性。每次我访问旅客时,都会通过Trips。

那么,有没有办法我可以创建一个名为’TripEntity’的NSManagedObject新子类并存储我的乘客-
无需1.为’Passenger’创建另一个NSManagedObject子类2.创建一个与Passenger和Trip之间具有反比关系的关系?简单地说,我只是希望它成为一个属性。从概念上讲,对我来说,这也是一个属性。这不是真正的关系…

还是在使用Core-data之后,每个自定义类型都需要明确地是NSManagedObject的子类?否则,它将不会持续存在。我猜这也是对象 图的
含义。您的图需要完整。图外的任何内容都将被忽略…

我之所以这样问,是因为我实际上要存储的JSON对象是巨大的,并且我正在尝试减少需要完成的工作。


问题答案:

任何自定义属性都必须是可以表示为“核心数据”属性类型之一的东西。其中包括明显的东西,例如字符串和数值。它还包括“二进制”,这是可以在NSDataData在Swift中)进行转换的任何东西。

根据您的描述,最好的方法可能是

  1. 采用NSCoding您的Passenger类。
  2. 使passenger属性成为Core Data“可转换”类型。(顺便说一句,这应该是一排乘客吗?您有一个相关的乘客,但是您的问题将其描述为好像有一个以上的乘客)。
  3. 完成#2之后,将passenger属性的“ custom class”字段设置为您的类的名称- Passenger

如果您做这两件事,Core Data将自动调用NSCoding方法以在您的Passenger类和可以保存在Core Data中的二进制Blob之间进行转换。



 类似资料:
  • 我已经有了一个工作中的swagger文档,它使用swagger UI项目生成文档,但我遇到了一个小问题。 Mongoose支持的数据类型,这基本上是一个可以包含任何内容的非结构化对象。但是,根据Swagger规范,属性的的唯一可能值是、、、和。我在留档、Google或GitHub上Swagger-Spec项目的开放问题中找不到任何允许混合数据类型的内容。 在Swagger-Spec留档中,它们定义

  • 问题内容: 不可变对象是否必须具有所有属性final? 据我说不是。但是我不知道我是否正确。 问题答案: 不可变对象(所有属性都是final)和有效不可变对象(属性不是final,但不能更改)之间的主要区别是安全发布。 由于Java内存模型为最终字段提供了保证,因此您可以在多线程上下文中安全地发布不可变对象,而不必担心添加同步: final字段还允许程序员无需同步即可实现线程安全的不可变对象。即使

  • 问题内容: 我有一组服务器,每个服务器都装有一堆可以压缩的文件。服务器均具有不同数量的核心。如何编写bash脚本为每个核心启动gzip,并确保gzip没有压缩相同的文件? 问题答案: 如果您使用的是Linux,则可以使用GNU的xargs启动与内核一样多的进程。 find -print0 / xargs -0保护文件名中的空格 xargs -n 1表示每个文件一个gzip进程 xargs -P指定

  • 我正在尝试使用DynamoDB JavaScript shell创建一个简单的表,我得到了这个异常: 下面是我试图创建的表: 但是,如果我将第二个属性添加到KeySchema,它就可以正常工作。a工作台下方: 我不想将范围添加到密钥架构。知道怎么修吗?

  • 我有如下表格和: 我的型号分类如下:和: 这样做

  • 问题内容: 从https://stackoverflow.com/a/1529099/156458 为了支持任意属性分配,对象需要一个:与对象关联的字典,可以在其中存储任意属性。否则,就无处放置新属性。 在可怕的循环依赖问题之前(因为它像大多数其他事物一样,都是从;-继承的),它的实例不会携带-如果这样做的话,这会使python中的每个对象都受字典约束,这意味着开销当前没有或不需要字典的每个对象中