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

当您知道没有保存实体时,如何在CoreData中处理提取请求

  •  1
  • icekomo  · 技术社区  · 8 年前

    我有一个应用程序,我知道它第一次运行时不会在CoreData中保存任何内容。我正在尝试检查这种情况:

    let fetchRequest=NSFetchRequest(实体名称:“个人”)

        let error = NSErrorPointer()
    
        do{
            let fetchResults = (try! coreDataStack.context.countForFetchRequest(fetchRequest, error: error))
            print("Count \(fetchResults)")
        } catch let error as NSError{
            print("Fetch failed: \(error.localizedDescription)")
        }
    

    我收到一条警告,说“从“Int”转换为无关类型“[Person]”总是失败。

    我只是不确定我错过了什么。我确信在CoreData中检查任何实体是一种常见的做法。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Sohil R. Memon    8 年前

    你不需要把它转换成 [Entity] 因为 countForFetchRequest 返回计数数。所以,你需要在不选角的情况下打电话。

    let fetchResults = coreDataStack.context.countForFetchRequest(fetchRequest, error: error)
    print("Count \(fetchResults)")
    
        2
  •  0
  •   icekomo    8 年前

    我能够使用此代码使countForFetchRequest工作:`let fetchRequest=NSFetchRequst(entityName:“Person”)

        var error: NSError?
    
        let count = coreDataStack.context.countForFetchRequest(fetchRequest, error: &error)
    
        if count != NSNotFound {
            print("Count \(count)")
        } else {
            print("Could not fetch \(error), \(error?.userInfo)")
        }`