核心数据以编程方式向条目添加属性

时间:2011-12-24 14:05:48

标签: objective-c ios cocoa-touch core-data

我刚刚开始使用核心数据。我有大量具有大约40-50个属性的实体。鉴于我有一个表示属性名称的字符串数组(这些属性的类型都是字符串),有没有办法可以通过编程方式设置数组中的属性?或者我是否必须手动将这些属性粘贴到Xcode IDE中?

2 个答案:

答案 0 :(得分:10)

您可以以编程方式创建模型。对于大多数人来说,Xcode IDE是最简单的。

使用

创建模型
NSManagedObjectModel *mom = [[[NSManagedObjectModel alloc] init] autorelease];

然后使用

创建您的实体
NSMutableArray *entities = [NSMutableArray array];
NSEntityDescription *event = [[[NSEntityDescription alloc] init] autorelease];
[entities addObject:event];
[event setName:@"Event"];
[event setProperties:eventProperties];
...

然后将实体添加到模型中:

[mom setEntities:entities];

请注意,一旦将模型与商店/上下文一起使用,就无法更改模型。

创建模型后,可以使用NSCoding保存模型。

这也显示在Core Data Utility Tutorial

答案 1 :(得分:0)

虽然摆弄sqlite数据存储对你没有帮助,但是有一个文件描述了项目文件夹中的数据模型。此文件采用 xml格式,因此您可以遍历数组并在此文件中生成必要的条目。然后,您可以覆盖默认文件并在Xcode中重新打开项目。如果幸运的话,您的所有实体和属性都将存在。

为了让您入门,让我指出您的文件。如果您刚刚开始使用默认核心数据模型的新项目,则应该位于

<project directory>/<project name>/project_name.xcdatamodeld/project_name.xcdatamodel

默认情况如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model name="Test1.xcdatamodel" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="11A491" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
    <entity name="Event">
        <attribute name="timeStamp" optional="YES" attributeType="Date"/>
    </entity>
    <elements>
        <element name="Event" positionX="261" positionY="189" width="128" height="60"/>
    </elements>
</model>

希望这有帮助。