Ios 连接条件后的核心数据和排序
我的核心数据表中有3个表。Ios 连接条件后的核心数据和排序,ios,sorting,core-data,Ios,Sorting,Core Data,我的核心数据表中有3个表。 项目表:项目,具有ID列和与属性表的连接。 属性表:它有一个propertyValue列、一个到item表的连接和一个到property表的连接。 属性表:它有一个propertyName列和一个到属性表的连接 属性表包含一个名为“价格”的属性名称。 属性表包含属性“价格”的属性值“20”。 你认为我能按价格把商品分类吗 我正在使用一个NSFetchedResultsController,我正在为它创建一个NSFetchRequest。 我尝试为NSFetchRequ
项目表:项目,具有ID列和与属性表的连接。
属性表:它有一个propertyValue列、一个到item表的连接和一个到property表的连接。
属性表:它有一个propertyName列和一个到属性表的连接 属性表包含一个名为“价格”的属性名称。
属性表包含属性“价格”的属性值“20”。
你认为我能按价格把商品分类吗 我正在使用一个
NSFetchedResultsController
,我正在为它创建一个NSFetchRequest
。
我尝试为NSFetchRequest
编写一个带有比较器块对象的NSSortDescriptor。它不起作用了。在此之后,我尝试编写一个没有任何选择器或块对象的NSSortDescriptor,我只是设置了一个名为“dealPrice”的键,并使用名为-(NSString*)dealPrice
的方法在Item managed对象上创建了一个类别。它也不起作用
你知道其他的方法吗?或者您知道解决方案吗?我首先建议您不要再像数据库一样考虑CoreData。它不是一个数据库。你称之为“表”的东西实际上是实体。将它们视为对象,它们与其他对象具有属性和关系。考虑使您的数据模型尽可能简单。不要试图为数据库性能等优化您的结构。实际的备份架构不在您的控制之下
考虑到这一点,从您发布的关于数据模型的内容来看,您似乎应该能够折叠成至少2个实体,而不是3个实体(可能是1个,但不确定是否可以看到整个数据模型)。然后,您应该能够使用一个谓词对Items实体执行简单的fetch操作,该谓词对其相关对象的属性进行排序。我首先建议的是不要像数据库一样考虑CoreData。它不是一个数据库。你称之为“表”的东西实际上是实体。将它们视为对象,它们与其他对象具有属性和关系。考虑使您的数据模型尽可能简单。不要试图为数据库性能等优化您的结构。实际的备份架构不在您的控制之下
考虑到这一点,从您发布的关于数据模型的内容来看,您似乎应该能够折叠成至少2个实体,而不是3个实体(可能是1个,但不确定是否可以看到整个数据模型)。然后,您应该能够使用一个谓词对Items实体进行简单的获取,该谓词对其相关对象的属性进行排序。听起来您的真实对象模型是一个名为的实体,该实体名为Deal,属性名为“price”.听起来您的真实对象模型是一个名为的实体,该实体使用名为“price”的属性进行交易。您显然患上了SQL热。您试图将核心数据视为SQL包装器,这会把一切都搞糟 核心数据不是SQL。实体不是表。对象不是行。属性不是列。关系不是连接。核心数据是一个对象图管理系统,它可以持久化对象图,也可以不持久化对象图,还可以在后台使用SQL来持久化对象图。试图用SQL术语来理解核心数据会导致您完全误解核心数据,并导致很多悲伤和浪费时间 核心数据数据模型不应根据UI的需要或任何其他非数据需求进行配置。相反,它应该准确地建模/模拟应用程序处理的真实世界对象、事件或条件 在本例中,您正在建模:
Item{
id:string
property<-->Property.item
}
Property{
name:string
price:number
item<-->Item.property
}
如果每个属性
对象可以有多个关联的项
对象:
Item{
id:string
property<<-->Property.items
}
Property{
name:string
price:number
items<-->>Item.properties
}
项目{
id:字符串
propertyItem.properties
}
如何配置排序描述符取决于关系的详细信息以及tableview将显示的实体对象 您显然患了严重的SQL热。您试图将核心数据视为SQL包装器,这会把一切都搞糟 核心数据不是SQL。实体不是表。对象不是行。属性不是列。关系不是连接。核心数据是一个对象图管理系统,它可以持久化对象图,也可以不持久化对象图,还可以在后台使用SQL来持久化对象图。试图用SQL术语来理解核心数据会导致您完全误解核心数据,并导致很多悲伤和浪费时间 核心数据数据模型不应根据UI的需要或任何其他非数据需求进行配置。相反,它应该准确地建模/模拟应用程序处理的真实世界对象、事件或条件 在本例中,您正在建模:
Item{
id:string
property<-->Property.item
}
Property{
name:string
price:number
item<-->Item.property
}
如果每个属性
对象可以有多个as