【问题标题】:swift CoreData predicatesswift CoreData 谓词
【发布时间】:2016-08-10 12:31:13
【问题描述】:

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

【问题讨论】:

    标签: ios swift core-data nspredicate


    【解决方案1】:

    不要将谓词创建为字符串,这必然会失败,但 琐碎的案例。创建谓词为

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

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

    并将其传递给获取请求。谓词中的键是 Core Data 模型中定义的实体属性的名称 检查员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多