I'm wondering how to essentially create the equivalent of a Category for my CoreData NSManagedObject Client below:
I understand that Extensions are now the replacement of Categories in Swift - however am unsure of their implementation. Here is what I have deducted below:
class Client: NSManagedObject {
@NSManaged var name: String
@NSManaged var projects: NSSet
}
extension Client {
func addClientWithName(name:NSString, context:NSManagedObjectContext) -> Client {
var client:Client = Client();
// Check for name in the database already exists
let request:NSFetchRequest = NSFetchRequest(entityName: "Client")
let sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true)
let sortDescriptorsAry:NSArray = [sortDescriptor]
request.sortDescriptors = sortDescriptorsAry
request.predicate = NSPredicate(format: "name = %@", name)
var error:NSError?
let matches:NSArray = context.executeFetchRequest(request, error: &error)
if matches.count == 0 {
//Add new Client
var newClient:NSEntityDescription = NSEntityDescription.insertNewObjectForEntityForName("Client", inManagedObjectContext: context) as NSEntityDescription
newClient.setValue(name, forKey: "name")
context.save(nil);
} else {
client = matches.lastObject as Client
}
return client
}
}
With this implementation however, this is the error i get so far:
CoreData: error: Failed to call designated initializer on NSManagedObject class "Ttc9AppName6Client"
Any ideas on what could be causing this?
Edit: This is how i call the method from my other class:
@IBAction func saveBtnTapped(UIButton) {
println("save btn tapped")
var client:Client = Client().addClientWithName("Woofy Face", context: self.managedObjectContext)
}