I'm adding CoreData to my app. Simple fetching is ok, but when i try to fetch data with predicate i get exception in AppDelegate.
func fetchWithPredicate(table: String, pred: String)->NSArray
{
var appDel : AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate);
var context : NSManagedObjectContext = appDel.managedObjectContext
var request = NSFetchRequest(entityName: table)
request.predicate = NSPredicate(format: pred)//exception occurs on this string
request.returnsObjectsAsFaults = false
var results: NSArray = NSArray()
do{
results = try context.executeFetchRequest(request)
}
catch{}
return results
}
My predicate looks like this: "routeFormed == %@"+route.identifier! , where route.identifier is String. Should i add something to AppDelegate or to my entities? Also, i opened .sqlite file with sqlitebrowser, should i add predicates using visible names or the ones that i see in database(i.e. "routeFormed" or "ZROUTEFORMED")?
Do not create predicates as strings, that is bound to fail in any but trivial cases. Create the predicate as
let predicate = NSPredicate(format: "routeFormed == %@", route.identifier)
or
let predicate = NSPredicate(format: "%K == %@", "routeFormed", route.identifier)
and pass that to the fetch request. The keys in the predicate are the names of the entity properties as defined in the Core Data model inspector.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With