forked from michaelarmstrong/SuperRecord
-
Notifications
You must be signed in to change notification settings - Fork 0
Entity Management
PGLongo edited this page Mar 12, 2015
·
6 revisions
Assuming that you have the following class
@objc(Pokemon)
class Pokemon: NSManagedObject {
@NSManaged var level: NSNumber
@NSManaged var name: String
@NSManaged var id: NSNumber
@NSManaged var type: Type
}
@objc(Type)
class Type: NSManagedObject {
@NSManaged var id: NSNumber
@NSManaged var name: String
@NSManaged var pokemons: NSSet
}
let fireType = Type.createNewEntity(context: managedObjectContext) as Type;
fireType.name = "Fire";
let Charizard = Pokemon.createNewEntity(context: managedObjectContext) as Pokemon;
Charizard.id = "4"
Charizard.name = "Charizard"
Charizard.level = 36
Charizard.type = fireType
If you think that the Entity already exists or you don't want duplicates, you can search it using one of its attributes
let sameCharizardOfBefore = Pokemon.findFirstOrCreateWithAttribute("name", value: "Charizard",
context: managedObjectContext) // returns the previously created Charizard
let newCharmender = Pokemon.findFirstOrCreateWithAttribute("name", value: "Charmender", context: managedObjectContext) // returns a new NSManagedObject
Or using a NSPredicate
let predicate = NSPredicate(format: "%K = %@", "name","Charizard")
let anotherCharizard = Pokemon.findFirstOrCreateWithPredicate(predicate, context: managedObjectContext) as Pokemon
SuperRecord makes NSManagedObject deletion very simple
Pokemon.deleteAll(context: managedObjectContext);
var predicate = NSPredicate (format: "level == %d", 36)
Pokemon.deleteAll(predicate, context: managedObjectContext)