【问题标题】:Parse iOS SDK: strange "cannot do a comparison query of type: (NULL)"解析 iOS SDK:奇怪的“无法进行类型比较查询:(NULL)”
【发布时间】:2014-09-19 19:45:11
【问题描述】:

场景

我已经在一个项目中使用 parse.com 框架超过 6 个月了。看起来它非常有问题并且充满了错误,但如果我以正确的方式做这件事,我需要知道这一点。我正在尝试使用 PFQueryTableViewController 向用户显示类似的用户信息。我用代码...

-(PFQuery *)queryForTable {

    PFQuery *matchQuery = [PFUser query];
    [matchQuery whereKey:@"mostCommon" equalTo:[PFUser currentUser][@"mostCommon"]];
    [matchQuery whereKey:@"userID" notEqualTo:currentUserID];
    return matchQuery;

}

问题

当我运行它并尝试将此 PFQTVC 推送到堆栈上时,我收到此错误消息...

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Cannot do a comparison query for type: (null)'

这通常与没有在数据库中设置您的信息有关。我提供下面的图片来说明数据浏览器中确实存在 IS 数据。

问题

如果查询是正确的,并且数据在那里...... 那么为什么应用程序崩溃

【问题讨论】:

  • “userID”是用户表中的实际列吗?
  • 是的。我在上面的代码中设置了断点,它在“[matchQuery whereKey:@"mostCommon" equalTo:[PFUser currentUser][@"mostCommon"]];" 之后崩溃行代码。出于某种原因,它只是不喜欢那样。但我不知道为什么。
  • 你能不能 NSLog(@"%@", [PFUser currentUser]);
  • 哇!您正在做某事...我注销了当前用户,但“最常见”字段不存在!...这真的很奇怪。因为它是在 parse.com 上的数据浏览器中设置的。是什么赋予了?为什么我从设备查询时没有显示?
  • [[PFUser currentUser] objectForKey:@"mostCommon"];你必须使用objectForKey:

标签: ios parse-platform


【解决方案1】:

您遇到的一个问题是,为了访问对象键的值,您必须使用 objectForKey: 在您的代码中,您使用了不适用于 Parse 对象的括号表示法。

[[PFUser currentUser] objectForKey:@"mostCommon"];

【讨论】:

  • 感谢您的建议。不幸的是,我只是尝试过,但并没有什么不同。我想我缩小了现在的问题。这是当我从我的设备查询用户时,某个键(“mostCommon”)没有在查询中“显示”。它返回除该键之外的用户的所有信息。你知道为什么会这样吗?
  • 如果你这样做会发生什么:NSLog(@"%@", [[PFUser currentUser] objectForKey:@"mostCommon"]);
  • 我不得不在 parse.com 上的数据浏览器中删除该列,然后创建一个名为“common”的新列,现在效果很好。只是我想的一些解析故障。我会给你一张支票,为我指明正确的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 2017-06-19
  • 1970-01-01
  • 2016-10-18
  • 2013-11-27
  • 2016-02-09
  • 2018-06-30
相关资源
最近更新 更多