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

使用NSPredicte的FetchRequest找不到结果?

  •  0
  • bitops  · 技术社区  · 9 年前

    我将数据存储在具有列“name”和“series”的表中。我正在使用此NSPredicte查询:

    var request : NSFetchRequest = NSFetchRequest(entityName: "Entry")
    request.returnsObjectsAsFaults = false
    request.predicate = NSPredicate(format: "name = %@ AND series = %@", name, series)
    return request
    

    “name”和“series”变量作为字符串参数传入,这也是表上的数据类型。

    由于某种原因,此查询不返回任何数据。如果我在没有指定谓词的情况下对这个表执行提取请求,我可以看到数据确实存在。我不确定我做错了什么。

    值得一提的是,我尝试过用括号括住条件句,但这似乎也没什么区别。提前感谢!

    更新:我尝试了很多不同的方法,但到目前为止都没有效果。我真的被难住了。

    值得一提的是,我似乎和这个人有同样的问题: NSPredicate Returns No Results with Fetch Request, Works with Array Filtering

    但是,该条目中没有任何内容具体说明问题的解决方案。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Mundi    9 年前

    您可以通过以下方式检查数据是否存在

    1. 将应用文档目录的URL打印到控制台。
    2. 转到终端中的此目录
    3. 跑步 sqlite3 <databaseName>
    4. 尝试 select * from z<entityName> where name = '<nameData>'

    您将能够探索数据并检查它是否包含您所期望的内容。别忘了检查您的 name series 代码中的变量。

        2
  •  -1
  •   bitops    9 年前

    哦,哇…非常感谢大家的回答。最后发现,当我填充id以将新行插入到表中时,我正在查看一个不同的表来计算新的主键id。

    所以我覆盖了现有的记录,这就是为什么我的查询一直失败的原因。

    孩子们,如果你在没有严格检查的情况下复制/粘贴代码,你会过得很糟糕。