我正在尝试从查询中存储一组布尔值但是为数组获取null。
这就是我所拥有的:
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:
中的详细信息表视图控制器中交叉引用它,如果它是新的,请在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
答案 0 :(得分:1)
这个问题与保罗所说的有关,但不是。是的,您可以将它们作为数字包装但在您的环境中无关紧要。
问题就是其中一个问题,如果你知道它是什么,你就会在额头上拍打自己,然后说,哦,嗯!
简单地说,你已经限制你的查询不包括messageRead列类型,忽略它是什么类型的列,它可以是任何东西(字符串,数字等),但事实上你已经限制它< em>在&#39; selectKeys中排除:`这就是为什么它返回null:
selectKeys:使查询限制返回的PFObjects的字段仅包含提供的键。
参考: https://parse.com/docs/ios/api/Classes/PFQuery.html#//api/name/selectKeys:
只是一个简单的忽视。如果这些是后端中类中唯一的3列,则实际上不需要使用selectKeys:
,因为它将返回所有对象,而您只是将它们传递给可循环使用的数组。