我遇到CoreData的问题,我知道其中一部分是因为我对数据库编程和CoreData非常熟悉,因为我已经阅读了几个地方,不是数据库。我想问题的一部分似乎是像牛一样走路,像鸭子一样嘎嘎叫,让我感到沮丧。
我在其中一个flickrfetcher练习中完成了斯坦福大学的课程。 我想从特定地区获取所有照片。 我有三个对这个例子很重要的实体。
区域
属性
关系
位置
属性
关系
照片
属性
关系
还有其他实体和其他属性和关系,但它们与此讨论无关。
我正在填写photo_title的桌面视图,并希望从特定区域获取所有照片。所以我试图
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(请不是苹果文档)和子查询的一个很好的解释。我发现的解决方案似乎要么将其分解为多个查询或使用子查询,我还没有找到有关子查询的信息来源。
谢谢, 芯片
答案 0 :(得分:0)
出现此问题是因为您尝试按name
排序照片而没有此类属性。根据您的描述,我看到Photo
具有photo_title
属性,因此请将排序描述符调整为:
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"photo_title" ascending:NO]];