Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按关系筛选核心数据对象_Ios_Swift_Core Data_One To Many_Entity Relationship - Fatal编程技术网

Ios 按关系筛选核心数据对象

Ios 按关系筛选核心数据对象,ios,swift,core-data,one-to-many,entity-relationship,Ios,Swift,Core Data,One To Many,Entity Relationship,我有两个对象:Category和Item。项目有一个名称字段、价格字段和数量字段。类别有一个名称字段。一个类别也有许多项。当我访问类别的表视图时我想显示与该类别相关的所有项目。下面是我在添加新的项目以及提取类别以显示其所有项目时如何设置关系的代码。我没有正确地保存关系吗 储蓄关系 获取类别的项目 我的数据模型 因为项目关系与类别关系相反,所以不需要同时设置两者。如果将关系设置为一种方式,核心数据将自动执行另一种方式: item.setValue(selectedCategory, forKey

我有两个对象:
Category
Item
项目
有一个
名称
字段、
价格
字段和
数量
字段。
类别
有一个
名称
字段。一个类别也有许多
。当我访问
类别的表视图时
我想显示与该
类别相关的所有
项目
。下面是我在添加新的
项目
以及提取
类别
以显示其所有项目时如何设置关系的代码。我没有正确地保存关系吗

储蓄关系 获取类别的项目 我的数据模型

因为
项目
关系与
类别
关系相反,所以不需要同时设置两者。如果将关系设置为一种方式,核心数据将自动执行另一种方式:

item.setValue(selectedCategory, forKey: "category")
因此,以下行不是必需的

// selectedCategory: the parent of this new item
selectedCategory.setValue(NSOrderedSet(object: item), forKey: "item")
此外,您的谓词在获取中是错误的-不需要在谓词中使用
name
属性-CoreData将(在引擎盖下)使用自己的主键。因此,修正这一点:

fetchRequest.predicate = NSPredicate(format: "category = %@", category?.valueForKey("name") as! String)
为此:

fetchRequest.predicate = NSPredicate(format: "category = %@", category!)

保存项目时,选择的类别是什么?它是如何创建的?
selectedCategory
是我的数据模型的一个类别,我希望该项是其子项。它是在切换到此视图时设置的。是否有任何错误?在fetchRequest谓词中,您指的是category?.valueForKey。您确定返回值吗?没有错误。它只是运行,将项目保存到核心数据,但它在每个类别中都被引用。是的,这个值可以很好地打印出来。
fetchRequest.predicate = NSPredicate(format: "category = %@", category?.valueForKey("name") as! String)
fetchRequest.predicate = NSPredicate(format: "category = %@", category!)