如何在Core Data中创建父子关系?

时间:2018-02-26 10:05:45

标签: core-data swift3

  

我在JSON响应中有动态子对象来填充   偏好数据,每个偏好可以有“孩子”,也可以   有多个对象(以嵌套方式,详细介绍)。我需要保存   将这些数据导入Core数据然后从那里加载。我还需要保存   用户在途中选择一个用户时选择。

     

如何创建具有父子关系的表?是什么   在实体模型中实现实体关系以保存所有的最佳方法   这个数据?这是我的模型类:

class Menu: NSObject {

    var active:String?
    var code:String?
    var desc:String?
    var iconId:Int?
    var inactive:String?
    var isEatin:Int64?
    var isTakeAway:Int64?
    var menuId:Int?
    var menuName:String?
    var menuType:Int?
    var parentId:Int?
    var subMenus:[SubMenu]?
    var products:[Product]?

}

class SubMenu: NSObject {

    var code:String?
    var desc:String?
    var eatinPrice:Float?
    var isEatin:Int?
    var isTakeAway:Int?
    var menuId:Int?
    var menuName:String?
    var menuType:Int?
    var parentId:Int?
    var sortOrder:Int?
    var takeAwayPrice:Float?
    var products:[Product]?
}

class Product: NSObject {

    var addons:[Addon]?
    var modifiers:[Modifier]?
    var productImages:[ProductImages]?
    var code:String?
    var desc:String?
    var eatinPrice:Float?
    var isDisplayinMenu:Int?
    var isEatin:Int?
    var isProductset:Int?
    var isTakeAway:Int?
    var menuId:Int?
    var name:String?
    var note:String?
    var printer:String?
    var printerId:Int?
    var printerType:String?
    var productId:Int?
    var rating:Int?
    var sortOrder:Int?
    var takeAwayPrice:Float?
   }

class Addon: NSObject {

    var addonsId:Int?
    var addonsName:String?
    var productId:Int?
    var selectionCount:Int?
    var addonTypes:[AddonType]?
}

class Modifier: NSObject {

    var modifierId:Int?
    var modifierName:String?
    var productId:Int?
    var modifierType:[ModifierType]?
}

class AddonType: NSObject {

    var addonTypeId:Int?
    var addonTypeName:String?
    var price:Float?
    var isAddonSelected:Int?

}

class ModifierType: NSObject {

    var modifierTypeId:Int?
    var modifierTypeName:String?
    var isModifierSelected:Int?
}


class AddonModCombo: NSObject {
    var addon:[Addon] = [Addon]()
    var modifier:[Modifier] = [Modifier]()
    var numberOfAddonMod = 1
}

1 个答案:

答案 0 :(得分:0)

要使用Core Data,您需要创建一个数据模型文件 - 大致是一个模式。然后你的类必须继承自NSManagedObject。 Xcode可以根据数据模型自动为您创建这些子类。

关系在数据模型中配置,并表示为托管对象类的属性。结果类似于您的subMenusproducts属性,但与数据模型和NSManagedObject类似。

Apple提供了大量详细的文档,其中包含示例代码和屏幕截图。例如,此处描述了关系:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/HowManagedObjectsarerelated.html#//apple_ref/doc/uid/TP40001075-CH17-SW1