【问题标题】:Parse.com Store Array of booleansParse.com 存储布尔值数组
【发布时间】:2015-05-08 17:49:11
【问题描述】:

我正在尝试存储来自查询的布尔数组,但该数组为空。

这是我所拥有的:

PFQuery *businessInquiry = [PFQuery queryWithClassName:@"BusinessInquiry"];
businessInquiry.cachePolicy = kPFCachePolicyIgnoreCache;
[businessInquiry selectKeys:@[@"messageBody", @"emailAddress"]];
[businessInquiry orderByDescending:@"createdAt"];
[businessInquiry findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    self.businessInquiryEmailArray = [objects valueForKey:@"emailAddress"];
    self.businessInquiryMessageArray = [objects valueForKey:@"messageBody"];
    self.businessInquiryObjIdArray = [objects valueForKey:@"objectId"];
    self.businessisNewArray = [objects valueForKey:@"messageRead"]; //this column is a BOOL column in parse backend but it returns null
}];

我的目标是在 cellForRowAtIndexPath: 的 Detail Table View Controller 中交叉引用它,如果它是新的,则在 cell.imageView.image 插槽中添加一个图标以指示它在视觉上是新的:

if ([self.isNew objectAtIndexPath:indexPath.row] == FALSE) {
    //New message
} else {
    //Read
}

为什么不存储值?

我也试过了:

self.businessiSNewArray = [[objects valueForKey:@"messageRead"] boolValue];

但这也没有用。有什么建议吗?

编辑

我将数组传递给细节视图控制器,如下所示:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
DetailTableViewController *detailVC = [storyboard instantiateViewControllerWithIdentifier:@"DetailTableViewController"];
detailVC.emailAddressArray = self.businessInquiryEmailArray;
detailVC.messageBodyArray = self.businessInquiryMessageArray;
detailVC.objIds = self.businessInquiryObjID;
detailVC.isNew = self.businessisNewArray;
detailVC.title = @"Business Inquiries";
[self.navigationController pushViewController:detailVC animated:YES];
}

除布尔值外,DetailVC 标头中的所有内容都与其各自的属性相匹配。他们返回 null

【问题讨论】:

  • @LyndseyScott emailAddress, messageBody, objectId 是后端的字符串列类型。 messageRead 是 bool 列类型
  • 您没有展示如何存储数组,只展示了如何检索它 - 但您不能存储 BOOL 数组,因为 BOOL 不是对象。您必须使用 NSNumber 对 BOOL 进行装箱/拆箱
  • 是的,这就是@Paulw11 将对象存储在businessisNewArray 中的问题。我只是像这样将它们传递给 detailViewController: detailVC.isNew = self.businessisNewArray。 isNew 是 Detail View Controller 中的另一个 NSArray 属性。我将尝试研究并查看是否有任何关于将它们存储为 NSNumber 的在线信息。谢谢
  • 等等...您的其他数组存储正常吗?
  • 是的@LyndseyScott,唯一的问题是将布尔值存储到数组中,其他一切都很棒。

标签: ios xcode parse-platform boolean


【解决方案1】:

这个问题与保罗所说的有关,但又不是。是的,您可以将它们装箱为数字,但与您的情况无关。

问题之一是,如果你知道它是什么,你会拍拍自己的额头说,哦,呵呵!

简单地说,您已将查询限制为不包括 messageRead 列类型,不管它是什么类型的列,它可以是任何类型(字符串、数字等),但事实上您已通过 限制它在'selectKeys:`中排除它是它返回null的原因:

selectKeys:使查询限制返回的 PFObjects 的字段只包括提供的键。

参考:https://parse.com/docs/ios/api/Classes/PFQuery.html#//api/name/selectKeys

只是一个简单的忽略。如果这些是后端类中仅有的 3 列,则确实没有必要使用selectKeys:,因为无论如何它都会返回所有对象,并且您只需将它们传递到可回收数组中。

【讨论】:

  • 它有效!你的祝福 thxs 在我的额头上打了一巴掌,说:“OH DUH!”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多