如何使用 managedObjectContext 来使用实体?

Posted

技术标签:

【中文标题】如何使用 managedObjectContext 来使用实体?【英文标题】:How to use entity with using managedObjectContext? 【发布时间】:2016-11-06 16:12:28 【问题描述】:

我不想保存到持久性存储。如何在不保存到持久存储的情况下使用实体类?

【问题讨论】:

请描述您为什么要这样做的问题。 我想要实体类但不想将其保存在持久存储中。 明白了。但为什么呢? 因为不想保存在持久化存储中。 【参考方案1】:

创建托管对象上下文和持久核心协调器后,您将两个持久存储分配给存储协调器:

NSPersistentStore *sqliteStore, *memoryStore;

sqliteStore = [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error];
if (sqliteStore == nil) 
    // ...

memoryStore = [coordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:&error];
if (memoryStore == nil) 
    // ...

稍后,当您将新对象插入上下文时,您会将新对象与 SQLite 存储或内存存储相关联:

Records *record = [NSEntityDescription insertNewObjectForEntityForName:@"Records" inManagedObjectContext:context];
[context assignObject:poster toPersistentStore:memoryStore];
// or: [context assignObject:poster toPersistentStore:sqliteStore];
record.empID = ...;
record.name = ...;

只有分配给 SQLite 存储的对象才会保存到磁盘。如果您重新启动应用程序,分配给内存存储的对象将消失。

【讨论】:

很高兴它有帮助..请不要忘记投票..干杯!! -(NSPersistentStore *)inMemoryStore NSError *error = nil; return [_persistentStoreCoordinator addPersistentStoreWithType:NSInMemoryStoreType configuration:nil URL:nil options:nil error:&error];

以上是关于如何使用 managedObjectContext 来使用实体?的主要内容,如果未能解决你的问题,请参考以下文章

将 UITabBarController 与内部 UINavigationControllers 一起使用时如何共享 ManagedObjectContext

如何通过 managedObjectContext 使用情节提要来初始化下一个控制器

如何从 ManagedObjectContext 中删除给定实体的所有对象

如何将 ManagedObjectContext 快速传递给根视图控制器

如何从 managedObjectContext 中删除未保存的对象

如何观察 NSManagedObject 是不是从 managedObjectContext 中移除