代码之家  ›  专栏  ›  技术社区  ›  Jamil

swift CoreData谓词

  •  3
  • Jamil  · 技术社区  · 8 年前

    我正在将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 .我应该添加一些内容吗 应用程序委派 还是我的实体?另外,我打开了 .sqlite 使用sqlitebrowser文件,我应该使用可见名称还是在数据库中看到的名称添加谓词 (i.e. "routeFormed" or "ZROUTEFORMED")?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Martin R    8 年前

    将谓词创建为字符串,这必然会在除 微不足道的案件。将谓词创建为

    let predicate = NSPredicate(format: "routeFormed == %@", route.identifier)
    

    let predicate = NSPredicate(format: "%K == %@", "routeFormed", route.identifier)
    

    并将其传递给fetch请求。谓词中的键是 核心数据模型中定义的实体属性的名称 检查员