我有一个Category实体和一个Subcategory实体。它是一对多的,因为一个类别可以有许多子类别。我仍然试图绕过这一切,所以请耐心等待......
extension Category {
@NSManaged var name: String?
@NSManaged var subCategory: SubCategory?
}
extension SubCategory {
@NSManaged var name: String?
}
然后在代码中的其他地方,例如一些视图控制器,我进行此调用
let category = NSEntityDescription.insertNewObjectForEntityForName("Category", inManagedObjectContext: self.context) as! Category
let sub = SubCategory()
sub.name = "sub1"
category.subCategory = sub
//save it
然后当我查看实际核心数据Sqlite db时,我可以看到Category实体的ZSUBCATEGORY列填充了子类别实体的主键值。我已经在数据模型中定义了关系。
我的问题是,我注意到一些关系存储在NSSet中。这样做有什么好处吗?我做错了什么并且非常恶劣?对我而言,这似乎更简单,因为我可以做...
category.subcategory.name
获取子类别名称
答案 0 :(得分:1)
如果是一对一的关系,确实可以这样做:
category.subcategory.name
这就是你在这个例子中所做的,你已经定义了一对一的关系。如果你想要一个比你定义的更多:
extension Category {
@NSManaged var name: String?
@NSManaged var subCategory: NSSet?
}
这种类别与子类别的数量相关联,因此如果你愿意的话
category.subcategory.name
您如何知道您正在访问哪个子类别?你必须遍历集合,找到你想要找到的一个子类别。