代码之家  ›  专栏  ›  技术社区  ›  Nate

iPhone-在核心数据中创建非持久实体

  •  0
  • Nate  · 技术社区  · 15 年前

    我想使用实体对象,但不存储它们…我读到我可以这样创建它们:

    myElement = (Element *)[NSEntityDescription insertNewObjectForEntityForName:@"Element" inManagedObjectContext:managedObjectContext];
    

    在那之后,把它们移走:

    [managedObjectContext deleteObject:myElement];
    

    然后我可以使用我的元素:

    myElement.property1 = @"Hello";
    

    虽然我认为这可能不是最理想的方法,但它的效果还是很好的。

    然后我尝试在我的UITableView中使用它…问题是对象在初始化后被释放。我的桌子一搬走就空了!

    谢谢

    编辑:我还尝试复制元素([myelement copy]),但我得到一个错误…

    5 回复  |  直到 10 年前
        1
  •  0
  •   Shai Mishali    10 年前

    也许你可以尝试在你的项目中有两个商店协调员。一个有坚持,另一个没有坚持。

        2
  •  0
  •   jamone    15 年前

    你不能就这么做吗?

    Element *myElement = [[Element alloc] init];
    

    然后你想怎么做就怎么做,大概你会把它添加到一个数组中,这样它就可以为你的UITableView显示。

        3
  •  0
  •   NSSplendid    15 年前

    考虑使用临时对象——与任何其他对象一样,由托管对象上下文处理,但不在保存操作中写入磁盘。它们通常被用于只对运行时对象建模,我怀疑您正在尝试这样做。

    以下是他们的一些信息: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreData/Articles/cdNSAttributes.html

    http://2pi.dk/tech/cocoa/transient_properties.html

        4
  •  0
  •   Community CDub    8 年前

    一个选项来自 an answer to a similar question 正在用nil上下文初始化nsmanagedObject:

    Element *myElement = [[Element alloc] initWithEntity:entity
                          insertIntoManagedObjectContext:nil];
    

    Element *myElement = [NSEntityDescription insertNewObjectForEntityForName:@"Element"
                                                       inManagedObjectContext:nil];
    
        5
  •  0
  •   bompf    11 年前

    我所做的是使用内存存储。您可以按照以下描述进行操作: http://commandshift.co.uk/blog/2013/06/06/multiple-persistent-stores-in-core-data/