【问题标题】:Setting PFObject in to UILabel将 PFObject 设置为 UILabel
【发布时间】:2014-08-05 14:59:32
【问题描述】:

我创建了一个名为 UserInfo 的 PFObject。一切都正确保存到 Parse,但是当我去检索它时,我不断收到错误。下面是我的代码。

PFQuery *query = [PFQuery queryWithClassName:@"UserInfo"];
[query whereKey:@"user" equalTo:currentUser];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        NSLog(@"Error: %@ %@", error, [error userInfo]);
    } else {
        self.userInfo = objects;
        NSLog(@"%@", self.userInfo);

        self.locationDisplay.text = [self.userInfo valueForKey:@"location"];

    }
}];

该错误的 NSLog 输出如下:

-[__NSArrayI length]: unrecognized selector sent to instance 0x9aa2be0 

提前感谢您的帮助!

【问题讨论】:

  • 激活异常断点并开始调试。日志消息说明了一切,您正在尝试查询不存在或根本不是数组的数组的长度。可能有多种原因。
  • 这很奇怪,因为当我记录包含对象的数组时,它显示“ {location = \"Orlando, FL"\ }
  • 您确定错误是从块内的代码中发生的吗?你确定“位置”是你数据库中的一个字符串吗?
  • @LyndseyScott 是的 100% 肯定它被保存为“位置”,这就是为什么我很困惑,即使我使用 self.locationDisplay.text = [[PFUser currentUser] valueForKey:@"location" ];它不会给我一个错误,而是什么都没有出现。当我记录 self.locationDisplay.text 时,它显示为 (null)

标签: ios parse-platform pfquery


【解决方案1】:

查询findObjectsInBackgroundWithBLock:objects 中存储一个数组。

完成此操作后,您将属性userInfo 设置为使用该行指向该数组

self.userInfo = objects;

所以基本上在这里,self.userInfo 持有对数组的引用。

当您尝试设置标签时,您直接在数组上调用方法valueForKey:。我相信你想在这个数组中的一个对象上调用这个方法。

您可以尝试将行更改为:

self.locationDisplay.text = [[self.userInfo firstObject] valueForKey:@"location"];

它将在数组的第一个对象上查找键 @"location" 的值,它应该是 PFObject

注意:在调用此行之前,您应该首先测试objects 不是空数组,否则如果数组为空,您可以尝试在nil 对象上调用valueForKey:

【讨论】:

  • 与 [[self.userInfo firstObject] valueForKey:@"location"] 完美配合;谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多