Ios 用户如何通过创建新属性向表中添加新字段

Ios 用户如何通过创建新属性向表中添加新字段,ios,xcode,core-data,attributes,Ios,Xcode,Core Data,Attributes,我对核心数据还不熟悉,我被困在我的xCode项目的这一部分 我创建了一个核心数据实体“Person”,该实体具有以下属性: 姓名 年龄 生日 地址 这些属性将显示在tableview中。到目前为止还不错 我的问题是,我希望表格有一个“添加字段”或“添加行”单元格,因此,当用户想要在这些已经创建的属性之外添加更多信息时,他只需单击该单元格并选择字段名称和类型 例如,如果他想在表的详细视图中显示此人的“电话号码”,他将新字段命名为“电话号码”,并选择其类型“号码”。然后,他有一个额外的字段,可以

我对核心数据还不熟悉,我被困在我的xCode项目的这一部分

我创建了一个核心数据实体“Person”,该实体具有以下属性:

  • 姓名
  • 年龄
  • 生日
  • 地址
这些属性将显示在tableview中。到目前为止还不错

我的问题是,我希望表格有一个“添加字段”“添加行”单元格,因此,当用户想要在这些已经创建的属性之外添加更多信息时,他只需单击该单元格并选择字段名称和类型

例如,如果他想在表的详细视图中显示此人的“电话号码”,他将新字段命名为“电话号码”,并选择其类型“号码”。然后,他有一个额外的字段,可以在其中添加此人的电话号码


如何在核心数据中做到这一点?用户是否可以手动向实体添加新属性并选择其格式?最好的方法是什么?谢谢。

我认为这在核心数据中不可能直接实现,因为它的目的是对象持久性,并且您不能动态地向对象添加新属性。在某种程度上,可以使用与具有
名称
(作为字符串)和
数据类型
字段的“额外属性”实体的对多关系来伪造它


我相信您最好的选择是使用SQLite来动态修改表结构。(http://www.sqlite.org/lang_altertable.html)

核心数据不能完全满足您的需求。核心数据不能改变结构,除非你设计了一个新版本,但你可以在xcode中这样做

但是您可以轻松地添加另一个名为f.ex的表。信息,它链接到person单个连接,并让person将多个连接回信息表

这样,您可以添加任意数量的字段和值,当然,您添加的所有额外字段都将跟随同一个人,因此如果您想使用手机字段,您必须将其添加到所有字段中

我建议您使用直接SQL,不要使用核心数据。核心数据不是一个数据库,它是一个对象存储,当您在iOS开发方面做得更好时,您就会理解其中的区别,它比您最初想象的要大得多

SQLite有一个优秀的高级库,称为FMDB,您可以在github上找到它:

在这里,您可以动态地执行直接SQL查询,如“altertable”等,尽管您所追求的不是很简单,但这可能是一个真正有趣的项目


祝你好运。

我的上一家公司做过类似的事情,但这不是小事。我没有访问代码的权限,所以这或多或少是来自内存

  • 您在实体中提供可转换属性(这将是一个字典)

  • 模型对象必须为此提供getter和setter,从而驱动原语方法设置/获取属性

  • 您可以沿着-objectForKey和-setobjectforkey行提供一个getter/setter,用于读取和写入值

  • 当您被告知“出错”时,您将更新实体中的字典

总之,维护键值对字典。也许您维护了一个影子字典,可以根据需要进行初始化和更新。自从我最后一次看到这段代码以来已经有4年了,所以代码有点模糊。但是你应该明白。这就像魔术一样——您可以任意设置任何键/值对(假设字符串键和符合NSCoding的值),并且始终可以通过向字典请求其当前的键集来请求键