Программно создать атрибут - Основные данные - PullRequest
1 голос
/ 04 апреля 2011

У меня есть простой проект iphone, который содержит простой xcdatamodel, который имеет одну сущность примерно с 3 атрибутами ..

Я хочу знать, есть ли способ программно добавить атрибут к объекту. то есть, если пользователь нажимает кнопку «добавить» какого-либо вида, простой атрибут строки добавляется к сущности и сохраняется ..

Если это невозможно, кто-то может направить меня в правильном направлении ...

Ответы [ 2 ]

5 голосов
/ 05 апреля 2011

Вы можете программно изменять объекты, но вы не можете изменить модель управляемого объекта после того, как она была назначена контексту управляемого объекта, что делает ее бесполезной для любых определенных пользователем изменений.В любом случае вы не захотите добавлять объекты программно, потому что это сделает ранее созданный файл постоянного хранилища бесполезным.

Если вы хотите создать более гибкую, расширяемую пользователем модель данных, вы должны отступить и сделать свои объекты более гибкими, добавив необязательные отношения к другому объекту или группе наследования объектов, которая может моделировать дополнительные данные.,

Например: предположим, у вас есть список контактов, и вы хотите добавить поля свободной формы для каждого контакта.Вы бы настроили свои объекты так.

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

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

Каждый раз, когда пользователь добавляет новое поле, вы создаете новый объект 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
}

Затем вы можете вставить объект TextField или NumberField в Contact.userDefinedFields по мере необходимости.

1 голос
/ 04 апреля 2011

Я не уверен, что вы можете добавить атрибут с кодом, но, может быть, вы можете рассмотреть возможность использования отношения один ко многим?

...