CoraData 获取多个关系
Posted
技术标签:
【中文标题】CoraData 获取多个关系【英文标题】:CoraData fetch over multiple relationships 【发布时间】:2014-07-14 17:25:45 【问题描述】:我在使用 CoreData 时遇到问题,我知道部分原因是因为我非常熟悉数据库编程和 CoreData,因为我已经阅读了几个地方,而不是数据库。我想问题的一部分是它似乎像牛一样走路,像鸭子一样嘎嘎叫,这让我很沮丧。
我正在完成斯坦福课程的一项 flickrfetcher 练习。 我想获取特定区域的所有照片。 我有三个对这个例子很重要的实体。
地区
属性
region_ID region_Name 照片数量关系
有位置位置
属性
location_ID location_name 照片数量关系
isInRegion 有照片照片
属性
photo_ID 照片标题关系
位置还有其他实体和其他属性和关系,但与本次讨论无关。
我正在填充 photo_title 的 tableview,并希望获取来自特定区域的所有照片。所以我正在尝试
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Photo"];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO]];
request.predicate=[NSPredicate predicateWithFormat:@"ANY ofLocation.isInRegion.regionName=%@",self.regionName];
NSError *error;
NSArray *photoResults = [context executeFetchRequest:request error:&error];
我收到.768 FlickrRegions[2592:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath name not found in entity <NSSQLEntity Photo id=3>
我猜这是因为谓词,但我无法找到一个很好的解释来说明如何设置 coreData 显然是一个复杂的谓词。
作为第二部分。有人可以指出我对coredata(不是苹果文档)和子查询的一个很好的解释。我找到的解决方案似乎要么将其分解为多个查询,要么使用子查询,但我还没有找到有关子查询的信息来源。
谢谢, 芯片
【问题讨论】:
【参考方案1】:出现问题是因为您尝试按name
对照片进行排序,而没有这样的属性。根据您的描述,我看到 Photo
具有 photo_title
属性,因此将您的排序描述符调整为:
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"photo_title" ascending:NO]];
【讨论】:
天啊。我不敢相信我错过了。我本可以发誓我评论了这一点。每次我必须进行新的查询并更改/评论我不需要的内容时,我一直在抓取相同的代码块。谢谢,很抱歉浪费您的时间。以上是关于CoraData 获取多个关系的主要内容,如果未能解决你的问题,请参考以下文章