Ios 在CoreData中存储和获取字典数组

Ios 在CoreData中存储和获取字典数组,ios,swift,core-data,Ios,Swift,Core Data,我正在和swift一起处理CoreData,在我的项目中,我想在CoreData中存储/获取字典。My Dictionary包含类别详细信息以及子类别详细信息(以字典形式的数组形式)。我已经采用了类别详细信息的模型,但我不知道如何存储特定类别的子类别详细信息 我应该为子类别采用单独的模型吗 所以请帮我做这个 我有一本字典,看起来像: { "category": [ { "id": "1", "category_name": "Water", "

我正在和swift一起处理CoreData,在我的项目中,我想在CoreData中存储/获取字典。My Dictionary包含类别详细信息以及子类别详细信息(以字典形式的数组形式)。我已经采用了类别详细信息的模型,但我不知道如何存储特定类别的子类别详细信息

我应该为子类别采用单独的模型吗

所以请帮我做这个

我有一本字典,看起来像:

{
    "category": [
    {
      "id": "1",
      "category_name": "Water",
      "sub_category_count": "3",
      "sub_category": [
       {
          "sub_categoryid": "1",
          "sub_categoryname": "Water1"
       },
       {
          "sub_categoryid": "2" ,
          "sub_categoryname": "Water2"
       },
       {
          "sub_categoryid": "3" ,
          "sub_categoryname": "Water3"
       }
      ]
    },
    {
      "id": "2",
      "category_name": "Health",
      "sub_category_count": "3",
      "sub_category": [
      {
         "sub_categoryid": "1" ,
         "sub_categoryname": "Health1"
      },
      {
         "sub_categoryid": "2" ,
         "sub_categoryname": "Health2"
      },
      {
        "sub_categoryid": "3" ,
        "sub_categoryname": "Health3"
      }
     ]
   }
]
}

您应该为子类别创建单独的实体,并向子类别添加一对多关系

托管对象模型如下所示

然后转到编辑器>创建NSManagedObject子类。 您将获得4个文件

SubCategory.swift
SubCategory+CoreDataProperties.swift
Category.swift
Category+CoreDataProperties.swift
Category.swift
中添加以下方法

func addSubcategoryObject(sub: SubCategory) {
    sub.category = self
}
然后像下面这样解析数据

data = your data.....
let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) as! NSDictionary
if let categories = json["category"] as? [NSDictionary] {
    for category in categories {
        let categoryObject = NSEntityDescription.insertNewObjectForEntityForName("Category", inManagedObjectContext: self.managedObjectContext) as! Category
        categoryObject.category_name = category["category_name"] as? String
        categoryObject.id = NSNumber(integer: Int((category["id"] as? String)!)!)
        categoryObject.sub_category_count = NSNumber(integer: Int((category["sub_category_count"] as? String)!)!)

        if let subcateories = category["sub_category"] as? [NSDictionary] {
            for subCategory in subcateories {
                let subCategoryObject = NSEntityDescription.insertNewObjectForEntityForName("SubCategory", inManagedObjectContext: self.managedObjectContext) as! SubCategory
                subCategoryObject.sub_categoryname = subCategory["sub_categoryname"] as? String
                subCategoryObject.sub_categoryid = NSNumber(integer: Int((subCategory["sub_categoryid"] as? String)!)!)
                categoryObject.addSubcategoryObject(subCategoryObject)
            }
        }
    }
}
编辑


您应该在
子类别
中向
类别

添加一个反向关系类别,但是我应该如何存储此子类别数据?您的类别模型中将有一个子类别数组,因此,您必须为字典中的每个子类别创建一个子类别对象。也就是说,我应该在category Modelbot数组中获取子类别对象数组,您只需在模型中添加一个关系即可。然后为这些实体创建托管对象。你可以理解它的用途,然后你可以参考这里的关系教程,它的目标是C。我会在一段时间内更新我的答案