Skip to content
PGLongo edited this page Mar 12, 2015 · 6 revisions

Contents

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
}

Entity Creation

Create an Entity

 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

Create an Entity of find one if exists

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

Entity Deletion

SuperRecord makes NSManagedObject deletion very simple

Delete all Entities

 Pokemon.deleteAll(context: managedObjectContext);  

Delete all Entities matching a NSPredicate

 var predicate = NSPredicate (format: "level == %d", 36)
 Pokemon.deleteAll(predicate, context: managedObjectContext)