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