Core Data 以编程方式向条目添加属性
Posted
技术标签:
【中文标题】Core Data 以编程方式向条目添加属性【英文标题】:Core Data add attributes to entries programmatically 【发布时间】:2011-12-24 14:05:48 【问题描述】:我刚刚开始使用核心数据。我有一堆具有大约 40-50 个属性的实体。鉴于我有一个代表属性名称的字符串数组(这些属性的类型都是字符串),有没有一种方法可以以编程方式从数组中设置属性?还是我必须手动将这些属性复制粘贴到 Xcode IDE 中?
【问题讨论】:
【参考方案1】:您可以通过编程方式创建模型。 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中。
【讨论】:
【参考方案2】:虽然摆弄 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" />
</elements>
</model>
希望这会有所帮助。
【讨论】:
Apple 根本不支持。请不要使用这个。 只是为了重申丹尼尔的评论。请不要这样做。 Apple 提供了完美可用的 API,用于在运行时修改托管对象模型(有关更多信息,请参阅 NSManagedObjectModel API 文档)。不要乱用 xcdatamodel 文件 - 它的目的是支持 Xcode 模型编辑器,并且没有记录或支持。以上是关于Core Data 以编程方式向条目添加属性的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式或静态方式向 Wordpress 主题的 <html> 标签添加自定义属性