【发布时间】:2011-12-24 14:05:48
【问题描述】:
我刚刚开始使用核心数据。我有一堆具有大约 40-50 个属性的实体。鉴于我有一个代表属性名称的字符串数组(这些属性的类型都是字符串),有没有一种方法可以以编程方式从数组中设置属性?还是我必须手动将这些属性复制粘贴到 Xcode IDE 中?
【问题讨论】:
标签: objective-c ios cocoa-touch core-data
我刚刚开始使用核心数据。我有一堆具有大约 40-50 个属性的实体。鉴于我有一个代表属性名称的字符串数组(这些属性的类型都是字符串),有没有一种方法可以以编程方式从数组中设置属性?还是我必须手动将这些属性复制粘贴到 Xcode IDE 中?
【问题讨论】:
标签: objective-c ios cocoa-touch core-data
您可以通过编程方式创建模型。 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中。
【讨论】:
虽然摆弄 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>
希望这会有所帮助。
【讨论】: