2015-02-11 48 views

回答

2

这是在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 
相关问题