繁体   English   中英

iPhone - 核心数据模型设计问题

[英]iPhone - Core Data Model Design Question

我正在审核斯坦福大学的iTunesU iPhone开发课程,并且正在尝试使用Core Data。

本质上,该应用程序有两个利用核心数据的选项卡:1)收藏照片 - 这是用户选择“喜欢”照片的位置列表(来自Flickr)。 (如果在给定位置没有“收藏”照片,则会从此列表中删除)。 2)最近的照片 - 这是用户最近查看的照片列表。

我最初的想法是使用两个实体:照片和位置,其中Photo将具有“whereTaken”关系,这将是一个位置,而Location将具有反向关系“photos”以包含来自该位置的所有Photo对象。

但是,对于这个模型,我对如何跟踪给定位置是否有任何“收藏”照片感到困惑。 该作业建议在“位置”实体中保留一个属性,以指定该位置是否有任何“收藏”的照片。

所以 - 这是我的问题:

  1. 为“FavoritePhoto”和“RecentPhoto”而不仅仅是“Photo”创建单独的实体会更好吗?
  2. 如果没有,是否建议(或可能)在位置保留照片的子集(只有反向关系中的“收藏”照片)?
  3. 或者,每次我删除“收藏”照片以查看是否还有其他“收藏”照片时,是否需要迭代Photo对象的NSSet? 或者,也许将收藏的照片计数作为位置中的属性?

也许,我认为这完全错了 - 无论哪种方式,我都会感谢任何关于在这种情况下设计核心数据模型的建议,一般或具体的建议。

非常感谢您的时间和帮助!

你应该读一下NSPredicate。 您可以将此附加到获取请求以过滤您要检索的照片。 创建两个不同的Photo实体很可能是一个错误。 您可能希望向Photo实体添加BOOL属性“isFavorite”。 然后,在获取照片时,您会使用以下内容:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isFavorite == %@", [NSNumber numberWithBool:YES]];

您还可以制作稍微复杂的谓词,以过滤收藏状态和位置。

NSPredicate编程指南

您可以在“位置”实体中创建一个已获取的属性,并使其仅使用相应的谓词获取“已收藏”的照片。

希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM