我正在将CoreData添加到我的应用中。简单的提取是可以的,但是当我尝试使用谓词获取数据时,我会在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
}
我的谓词如下所示:"routeFormed == %@"+route.identifier!
,其中route.identifier
为String
。我应该向AppDelegate
或我的实体添加内容吗?另外,我用sqlitebrowser打开.sqlite
文件,我应该使用可见名称添加谓词还是我在数据库中看到的谓词(i.e. "routeFormed" or "ZROUTEFORMED")?
答案 0 :(得分:4)
不将谓词创建为字符串,但必然会失败 琐碎的案件。将谓词创建为
let predicate = NSPredicate(format: "routeFormed == %@", route.identifier)
或
let predicate = NSPredicate(format: "%K == %@", "routeFormed", route.identifier)
并将其传递给获取请求。谓词中的键是 核心数据模型中定义的实体属性的名称 检查员。