Reputation: 2002
I got a class like :
@objc(User)
class User: NSManagedObject {
@NSManaged var id: String
//MARK: - Initialize
convenience init(id: String, context: NSManagedObjectContext?) {
// Create the NSEntityDescription
let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: context!)
// Super init the top init
self.init(entity: entity!, insertIntoManagedObjectContext: context)
// Init class variables
self.id = id
}
}
I create a new User in a ViewController :
managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var aUser = User(id: "500T", context: managedObjectContext)
I have another class "Group" where Group have many Users. To save user I do something like
aGroup!.users = NSSet(array: users!)
!managedObjectContext.save
I don't want to save all users. How can I instantiate a user without saving it ?
Upvotes: 3
Views: 4925
Reputation: 33
@objc(User)
public class User: NSManagedObject {
convenience init(id: String, context: NSManagedObjectContext?) {
// Create the NSEntityDescription
let entity = User.entity()
self.init(entity: entity, insertInto: context)
// Init class variables
self.id = id
}
}
Upvotes: 0
Reputation: 2002
I found my answer and add a needSave boolean to the user init. Maybe it's not the best answer but it's working.
@objc(User)
class User: NSManagedObject {
@NSManaged var id: String
//MARK: - Initialize
convenience init(id: String, needSave: Bool, context: NSManagedObjectContext?) {
// Create the NSEntityDescription
let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: context!)
if(!needSave) {
self.init(entity: entity!, insertIntoManagedObjectContext: nil)
} else {
self.init(entity: entity!, insertIntoManagedObjectContext: context)
}
// Init class variables
self.id = id
}
}
Upvotes: 8