【问题标题】:Difference between NSEntityDescription creation methodsNSEntityDescription 创建方法的区别
【发布时间】:2014-01-30 12:17:09
【问题描述】:

就结果而言,以下两种方法有什么区别:

+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

+ (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;

我应该什么时候使用它们中的每一个?

【问题讨论】:

    标签: ios core-data creation nsentitydescription


    【解决方案1】:

    insertNewObjectForEntityForName 创建实体的实例并将其添加到上下文中。上下文现在很脏,需要保存。返回的实例是NSManagedObject 的子类。

    entityForName 返回描述实体的NSEntityDescription 实例,它具有哪些属性和关系,以及它们是如何构造的。上下文不会以任何方式修改。

    【讨论】:

      【解决方案2】:

      insertNewObjectForEntityForName:... 返回NSManangedObject 对象,与下面的代码相同。

      NSManagedObjectModel *managedObjectModel =
              [[context persistentStoreCoordinator] managedObjectModel];
      NSEntityDescription *entity =
              [[managedObjectModel entitiesByName] objectForKey:entityName];
      NSManagedObject *newObject = [[NSManagedObject alloc]
                  initWithEntity:entity insertIntoManagedObjectContext:context];
      return newObject;
      

      entityForName:.. 返回NSEntityDescription 对象,与下面的代码相同。

      NSManagedObjectModel *managedObjectModel = [[context persistentStoreCoordinator] managedObjectModel]; 
      NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:entityName]; 
      return entity;
      

      【讨论】:

        【解决方案3】:

        id 变量是一种表示对象地址的数据类型。因为它只是一个地址,id可以是任何对象,因为它的类型是指针,所以不需要包含*符号

        + (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
        

        因为 * 符号表示指向特定类型的指针。

        + (NSEntityDescription *)entityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-05-12
          • 1970-01-01
          • 1970-01-01
          • 2013-07-22
          • 1970-01-01
          • 2019-06-27
          • 1970-01-01
          相关资源
          最近更新 更多