gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:18:34 29 4
gpt4 key购买 nike

我正在使用 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"
}
]
}
]
}

最佳答案

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

托管对象模型将如下所示 enter image description here

然后转到编辑器 > 创建 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 中添加一个反向关系 categoryCategory

关于ios - 在 CoreData 中存储和获取字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33772576/

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