核心数据:设计问题
Posted
技术标签:
【中文标题】核心数据:设计问题【英文标题】:Core data : design problem 【发布时间】:2011-06-06 12:59:04 【问题描述】:我是 Core Data 的新手,我尝试了一个设计问题。 假设我有两个实体:“产品”和“图像”。
Image 实体有一个名为“type”的属性(普通、迷你等)。
我希望 Product 实体具有 Image 类型的属性,例如:miniImageList、normalImageList 等...但我真的不知道是否可以使用 XCode4 图形编辑器创建属性其类型是先前声明的实体。
我发现的唯一丑陋的解决方案是在 Product 和 Image 之间创建一对多关系。因此,我生成了一个 NSSet,其中包含我想要的所有图像。这个解决方案的问题是我需要测试我想要的图像类型(迷你、普通)等......这不是很方便。
如果你们中的任何人知道如何解决这个问题,不客气;)
希望我已经清楚了,感谢阅读。
【问题讨论】:
【参考方案1】:我希望 Product 实体具有 Image 类型的属性,例如:miniImageList、normalImageList 等...但我真的不知道是否可以使用 XCode4 图形编辑器创建属性其类型是先前声明的实体。
为此,您需要建立关系。 “图像类型的属性”本质上是产品和图像之间的关系。
在您的情况下,更合适的解决方案是在 Product 和 Image 之间定义 fetched properties。因此,miniImageList 和 normalImageList 可以使用您需要在图像集上应用的“过滤”定义为获取的属性。但是,获取属性的一个重要限制是它们不是动态的。您需要确保生成的 Image NSArray 的内容考虑到最新的 Image 实体添加/删除/修改。
【讨论】:
您好,感谢您的回答。事实上,获取的属性可能是一个很好的解决方案。但是当我在我的模型中创建获取的属性时,我没有生成相关的 NSArray...不知道为什么! 不客气。那么,你如何使用你获取的属性呢? (代码 plz)我假设您正在这样做:NSArray *miniImages = [aProduct valueForKey:@"miniImageList"];
如何为获取的属性定义谓词?
不,我只使用了 XCode Core-Data 编辑器。我认为获取的属性的生成方式与 Relation 相同(除了使用 NSArray 而不是 NSSet )【参考方案2】:
要么将不同的图像尺寸分离为实体,要么扩展图像实体以容纳不同尺寸的图形。
在这种情况下,我认为第二种方法是最好的。产品将具有对图像实体及其属性的易于遵循的引用。
【讨论】:
以上是关于核心数据:设计问题的主要内容,如果未能解决你的问题,请参考以下文章