在不保存的情况下创建nsmanagedobject [@Example]
问题描述:
我想创建一个NSManagedObject
但不立即保存。在不保存的情况下创建nsmanagedobject [@Example]
我在哪里可以找到创建临时文件NSmanagedObject
的示例?
答
这是在IOS7,IOS8上测试的。
创建TMP NSManagedContext:为了确保您的NSManagedObject
不会是零,当你的背景下会创建的dealloc在你的应用程序代理临时NSManagedContext
。
文件AppDelegate.swift
import UIKit
import CoreData
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
private(set) var tmpContext : NSManagedObjectContext = NSManagedObjectContext()
....
}
创建NSManagedObject:致电您的customfile.swift
tmp和主要内容。主要内容将用于在您的NSManagedObject
实例中使用您的模型。
// CONTEXT
let tmpContext = (UIApplication.sharedApplication().delegate as AppDelegate).tmpContext
let managedContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
// ENTITY
let entity = NSEntityDescription.entityForName("MY_ENTITY_NAME", inManagedObjectContext: managedContext)
let obj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: tmpContext)
保存您的NSManagedObject:不幸的是你无法通过将主上下文保存你的对象。为了避免,你需要复制你所有的NSManagedObject
var error : NSError?
// CREATE YOUR NSManagedObject
let managedContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
let entity = NSEntityDescription.entityForName("MY_ENTITY_NAME", inManagedObjectContext: managedContext)
let newObj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
// COLLECT ALL VALUE SET OF YOUR OBJ
let keysObj = (obj.entity.attributesByName as NSDictionary).allKeys
let dictObj = track.dictionaryWithValuesForKeys(keysObj)
newObj.setValuesForKeysWithDictionary(dictObj)
// SAVE ALL
managedContext.processPendingChanges()
managedContext.insertObject(newObj)
managedContext.save(&error) // dont forget to check