所以,我刚刚开始开发一个 iOS 库存应用程序,我希望它非常灵活。我想要的是让用户能够定义一个产品类别,然后是它的自由度,即颜色、尺寸、图像、样式等。我知道我可以通过设计一个已经包含这些属性的数据模型来实现这一点,但用户可能并不总是需要每一个,而且(更麻烦的是)可能需要我没有想到的其他属性(如材料或品牌)。有没有办法使用 CoreData 构建这种灵活的数据模型?我确信我可以使用 plist 来做到这一点,但我想利用 iCloud 和 NSFetchedResultsController,更不用说谓词等了。
这甚至不是可以使用数据库实现的东西吗?现在我正在查看问题,似乎我可能会受到强制结构的限制......如果用户在添加记录后更改属性怎么办?我必须处理迁移商店吗?啊。
...
好的,这是另一种方法,也许有人可以评论这是否疯狂。我开始思考,用户可能添加的所有属性基本上都属于同一类型——它们有一个字符串标签(属性的名称,例如“颜色”)和一系列字符串值(例如“红色”、 “木炭”、“蓝色”等)。那么为什么不建立实体的这些关系而不是属性呢?所以,现在我的对象模型中有三个实体:MerchCategory
,这是我们正在讨论的商品类型,MerchItem
,这是库存中的单个项目,并且Dimension
是项目可能具有的质量。
MerchItem
具有sku
属性,与 具有多对多关系Dimension
,与 具有多对一关系MerchCategory
。
Dimension
具有name
和value
属性,以及categories
和items
多对多关系。
这是一个合理的模式吗?在我看来,我将能够通过查看它们的名称来查询每个维度,并通过查看它们的值来获取每个配置的计数......并且用户将能够添加新的而无需使用 NSEntityDescription . 想法?