Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CoreData用户定义的数据库结构?_Ios_Core Data - Fatal编程技术网

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

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

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

这难道不是使用数据库就可以实现的吗?现在我在考虑这个问题,似乎我会被强制结构限制得太多。。。如果用户在添加了记录后更改了属性,该怎么办?我必须处理迁移商店的问题吗?啊

好的,这里有另一种方法,也许有人可以评论这是否疯狂。我开始思考,用户可能添加的所有属性基本上都是相同的类型——它们有一个字符串标记(属性名称,例如“颜色”)和一系列字符串值(例如“红色”、“木炭”、“蓝色”等)。那么,为什么不建立实体的这些关系,而不是属性呢?所以,现在我在我的对象模型中有三个实体:
MerchCategory
,这是我们正在讨论的商品类型,
MerchItem
,这是库存中的单个项目,
维度
,这是一个项目可能具有的质量

MerchItem
具有
sku
属性,与
维度有多对多关系,与
MerchCategory有多对一关系

维度
具有
名称
属性,以及
类别
项目
多对多关系


这是一个合理的模式吗?在我看来,我可以通过查看每个维度的名称来查询它们,并通过查看它们的值来获取每个配置的计数。。。用户将能够添加新的,而无需乱动NSEntityDescription。想法?

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

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

请参阅

你正在完成一项极其艰巨的任务。这是可以做到的。FileMaker正在使用和进行此操作。但我怀疑他们有更多的人投入到产品中。

请参见


你正在完成一项极其艰巨的任务。这是可以做到的。FileMaker正在使用和进行此操作。但我怀疑他们有更多的人投入到产品中。

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

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

我正在研究类似的内容,我正在考虑创建一个名为“属性”的新核心数据类,以便我可以将对象设置为具有“与多个属性的关系”。每个属性都有核心数据字符串类型属性:“属性”、“类型”和“值”


我认为这应该提供足够的灵活性,以便随时添加产品属性。如果我碰巧实现了这一点,我将把它发布在这里

我正在研究类似的东西,我正在考虑创建一个名为“属性”的新核心数据类,这样我就可以将我的对象设置为具有“与多个属性的关系”。每个属性都有核心数据字符串类型属性:“属性”、“类型”和“值”


我认为这应该提供足够的灵活性,以便随时添加产品属性。如果我碰巧实现了这一点,我会把它发布在这里

是的,我想到了。不幸的是,我确实需要从他们那个里拿回来,这就是重点。如果我要用这样的NSData包装,我想我最好把整个东西放在一个plist里。是的,我想到了。不幸的是,我确实需要从他们那个里拿回来,这就是重点。如果我要像那样使用NSData打包,我想我最好把整个东西放在一个plist中。太棒了。所以我想我不能在周末完成这件事。。。这个链接很有用,我会看看我能覆盖多少范围。我想基本的问题是迁移,真的。太棒了。所以我想我不能在周末完成这件事。。。这个链接很有用,我会看看我能覆盖多少范围。我想最基本的问题是迁移,真的。我不明白为什么它不能那样工作。事实上,这似乎是利用核心数据框架的强大功能和灵活性的好方法!我只想确保你小心地设置你的删除方法。最终很容易出现没有剩余关系的悬空实体,或者在删除其他实体时将其删除的级联删除。祝你好运酷,谢谢!当我启动并运行它的时候,我会发布一个答案。我不明白为什么它不起作用