繁体   English   中英

CoreData用户定义的数据库结构?

[英]CoreData user defined database structure?

因此,我刚刚开始开发iOS库存应用程序,我希望它非常灵活。 我想要的是让用户能够定义产品类别,然后定义产品的自由度,即颜色,尺寸,图像,样式等。我知道我可以通过设计一个已经包含这些属性的数据模型来实现此目的。 ,但用户可能并不总是需要每个属性,并且(更麻烦的是)可能需要我没有想到的其他属性(例如材料或品牌)。 有没有办法使用CoreData构建这种灵活的数据模型? 我确定我可以使用plists做到这一点,但是我想利用iCloud和NSFetchedResultsController,更不用说谓词等等。

使用数据库甚至无法实现吗? 现在,我正在研究问题,似乎强制结构会限制我...如果用户在添加记录后更改属性该怎么办? 我需要处理商店迁移吗? 啊。

...

好的,这是另一种方法,也许有人可以评论这是否疯狂。 我想了一下,用户可能添加的所有属性基本上都是相同类型的-它们具有字符串标签(属性名称,例如'color')和一系列字符串值(例如'red', “木炭”,“蓝色”等)。 那么为什么不建立实体的这些关系而不是属性呢? 因此,现在我的对象模型中有三个实体: MerchCategory ,这是我们正在谈论的商品类型; MerchItem ,它是库存中的单个项目; Dimension ,它是项目可能具有的质量。

MerchItem有一个sku属性,以及在许多一对多的关系Dimension ,以及一个多到一的关系MerchCategory

Dimension具有namevalue属性,以及categoriesitems之间的多对多关系。

这是一个合理的模式吗? 在我看来,我将能够通过查看它们的名称来查询每个维度,并通过查看它们的值来获取每个配置的数量...并且用户将能够添加新的维度而无需为NSEntityDescription烦恼。 思考?

请参阅如何以编程方式将属性添加到现有的Core Data实体(对象)?

您正在完成一个非常大的任务。 可以办到。 FileMaker正在使用FileMaker MobileiPad的Bento来做到这一点。 但是我怀疑他们将有更多的人致力于这些产品。

我认为您将需要使用NSEntityDescription和NSPropertyDescription以编程方式将实体添加到NSManagedObjectModel中,以向实体添加属性。 我不确定迁移将如何进行。

只要不需要获取这些属性,就可以编写代码来添加和减去自定义属性,将它们存储在nsarray中并将它们全部捆绑到nsdata中,然后存储在核心数据中。 您可以根据需要简单地创建一个具有多个固定属性的实体,以便将其余的属性进行排序和获取并将其存储在一个nsdata属性中。

我正在从事类似的工作,并且正在考虑创建一个名为“属性”的新核心数据类,因此可以将对象设置为具有“与许多属性的关系”。 每个属性将具有核心数据字符串类型的属性:“属性”,“类型”和“值”。

我认为这应该具有足够的灵活性,可以即时添加产品属性。 如果我恰好实现了,我将在这里发布

暂无
暂无

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

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