核心数据 NSPredicate 不起作用[重复]

Posted

技术标签:

【中文标题】核心数据 NSPredicate 不起作用[重复]【英文标题】:Core Data NSPredicate not working [duplicate] 【发布时间】:2016-06-11 14:43:31 【问题描述】:

请帮帮我没有任何具体错误,运行时停止

func fachDataById(entityName: String, colummName: String, value: Int) -> Bool 
    let appDeleget = UIApplication.sharedApplication().delegate as! AppDelegate
    let manegeContext = appDeleget.managedObjectContext
    let fetchRequist = NSFetchRequest(entityName: entityName)
    print("ok fetchRequist")
    fetchRequist.predicate = NSPredicate(format: "%K == %@", colummName, value)

    do
        let results = try manegeContext.executeFetchRequest(fetchRequist)
        print(results)
        return true
    
    catch
        print("Error")
        return false
    

【问题讨论】:

尝试插入一些断点并检查您的字段,看看它们是否符合您的预期。 colummName 和 value 是您在 coredata 表中使用的预期值吗? 你调试过这个吗?你检查变量值了吗?它们有效吗? 您不能将 %@ 用于 Int 值。见this answer。 【参考方案1】:

问题是 value:Int 的 %@ 格式,将其转换为 NSObject 或 AnyObject 的值,如下所示:

NSPredicate(format: "%K == %@", colummName, value as NSObject)

【讨论】:

以上是关于核心数据 NSPredicate 不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 获取请求 NSPredicate 不起作用

NSPredicate 未在 CoreData 中返回 Int32

为啥 NSPredicate 和 DateComponents 不起作用

NSPredicate 正则表达式不起作用

带有 SUBQUERY 的 NSPredicate 不起作用

NSPredicate 不起作用?