以编程方式创建属性 - 核心数据

Ibz*_*Ibz 1 iphone cocoa-touch core-data xcdatamodel

我有一个简单的iphone项目,其中包含一个简单的xcdatamodel,它有一个实体,大约有3个属性.

我想知道是否有一种方法将属性编程方式添加到实体..也就是说,如果用户按下某种类型的"添加"按钮,一个简单的字符串属性添加到实体并保存..

如果这是不可能的,有人可能会指出我正确的方向..

Tec*_*Zen 5

您可以以编程方式更改实体,但在将托管对象模型分配给托管对象上下文后,您无法更改托管对象模型,这样就无法对任何用户定义的更改进行更改.在任何情况下,您都不希望以编程方式添加实体,因为这会使您先前创建的持久性存储文件无效.

如果要创建更自由格式的用户可扩展数据模型,则必须通过向可以为其他数据建模的另一个实体或实体继承组添加可选关系来退出并使您的实体更加灵活.

例如:假设您有一个联系人列表,并且您想要为每个联系人添加自由表单字段.您可以像这样设置您的实体.

Contact{
    name:string
    phone:string
    userDefinedFields<-->>UserDefined.contact
}

UserDefined{
    name:string
    contact<<-->Contact.userDefinedFields
}
Run Code Online (Sandbox Code Playgroud)

每当用户添加新字段时,您都会创建一个新UserDefined对象并将其添加到Contact.userDefinedFeilds关系中.你可以根据需要充实.如果您需要多种类型的用户定义字段,则应将其设置为:

Contact{
    name:string
    phone:string
    userDefinedFields<-->>UserDefined.contact
}

UserDefined{
    name:string
    contact<<-->Contact.userDefinedFields
}

TextField:UserDefined{
    text:string
}

NumberField:UserDefined{
    numValue:Number
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以Contact.userDefinedFields根据需要将TextField或NumberField对象放入其中.