我正在审核斯坦福大学的iTunesU iPhone开发课程,并且正在尝试使用核心数据。
本质上,应用程序有两个利用Core Data的选项卡: 1)收藏照片 - 这是用户选择“喜欢”照片的位置列表(来自Flickr)。 (如果在给定位置没有“收藏”照片,则会从此列表中删除)。 2)最近的照片 - 这是用户最近查看的照片列表。
我最初的想法是使用两个实体:照片和位置,其中Photo将具有“whereTaken”关系,这将是一个位置,而Location将具有反向关系“photos”以包含来自该位置的所有Photo对象
然而,对于这个模型,我对如何跟踪给定位置是否有任何“收藏”照片感到困惑。该作业建议在“位置”实体中保留一个属性,以指定该位置是否有“收藏”的照片。
所以 - 这是我的问题:
也许,我认为这完全错了 - 无论哪种方式,我都会感谢任何关于在这种情况下设计核心数据模型的建议,一般或具体的。
非常感谢您的时间和帮助!
答案 0 :(得分:2)
你应该读一下NSPredicate。您可以将此附加到获取请求以过滤您要检索的照片。创建两个不同的Photo实体很可能是一个错误。您可能希望向Photo实体添加BOOL属性“isFavorite”。然后,在获取照片时,您会使用以下内容:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isFavorite == %@", [NSNumber numberWithBool:YES]];
您还可以制作稍微复杂的谓词来过滤收藏状态和位置。
答案 1 :(得分:0)
您可以在“位置”实体中创建一个获取的属性,并让它仅使用相应的谓词获取“收藏的”照片。
希望有所帮助。