Skip to content

Instantly share code, notes, and snippets.

@lludo
Created November 7, 2014 08:08
Show Gist options
  • Save lludo/b86ad1f0fd9c0a771485 to your computer and use it in GitHub Desktop.
Save lludo/b86ad1f0fd9c0a771485 to your computer and use it in GitHub Desktop.
Initialize a managed object model with swift that will work for Tests and Application
lazy var managedObjectModel: NSManagedObjectModel = {
// The managed object model for the application.
let modelURL = NSBundle.mainBundle().URLForResource("<appName>", withExtension: "momd")!
let managedObjectModel = NSManagedObjectModel(contentsOfURL: modelURL)!
// Check is we are running as test or not
let environment = NSProcessInfo.processInfo().environment as [String : AnyObject]
let isTest = (environment["XCInjectBundle"] as? String)?.pathExtension == "xctest"
// Create the module name
let moduleName = (isTest) ? "<appName>Tests" : "<appName>"
// Create a new managed object model with updated entity class names
var newEntities = [] as [NSEntityDescription]
for (_, entity) in enumerate(managedObjectModel.entities) {
let newEntity = entity.copy() as NSEntityDescription
newEntity.managedObjectClassName = "\(moduleName).\(entity.name)"
newEntities.append(newEntity)
}
let newManagedObjectModel = NSManagedObjectModel()
newManagedObjectModel.entities = newEntities
return newManagedObjectModel
}()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment