簡體   English   中英

在 CoreData 中存儲和獲取字典數組

[英]store and fetch Array of Dictionary in CoreData

我正在使用 swift 處理 CoreData,在我的項目中,我想在 CoreData 中存儲/獲取字典。 我的字典包含類別詳細信息以及子類別詳細信息(以字典形式的數組)。 我已經采用了類別詳細信息的模型,但我不知道如何存儲特定類別的子類別詳細信息。

我應該為子類別采用單獨的模型嗎?

所以請幫助我做到這一點。

我有字典,看起來像:

{
    "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)
            }
        }
    }
}

編輯

您應該在Subcategory to Category添加一個逆關系類別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM