【问题标题】:Core Data add attributes to entries programmaticallyCore Data 以编程方式向条目添加属性
【发布时间】:2011-12-24 14:05:48
【问题描述】:

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

【问题讨论】:

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


    【解决方案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" width="128" height="60"/>
          </elements>
      </model>
      

      希望这会有所帮助。

      【讨论】:

      • Apple 根本不支持。请不要使用这个。
      • 只是为了重申丹尼尔的评论。请不要这样做。 Apple 提供了完美可用的 API,用于在运行时修改托管对象模型(有关更多信息,请参阅 NSManagedObjectModel API 文档)。不要乱用 xcdatamodel 文件 - 它的目的是支持 Xcode 模型编辑器,并且没有记录或支持。
      猜你喜欢
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 2022-12-23
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      相关资源
      最近更新 更多