我想根据布尔值true x false隐藏或不隐藏ImageView,它位于Parse数据库中。你能给我一些想法吗?因为我的CustomCell.h中有属性ImageView而出现问题
编辑:
PFObject *yes = [PFObject objectWithClassName:@"MyClass"];
cell.discounts.hidden = [yes[@"yesnocolumn"] boolValue];
我只是不理解PFObject的使用,myclass返回(null)值。
EDIT2:
PFQuery *query = [PFQuery queryWithClassName:@"Classname"];
[query whereKey:@"yesnocolumn" equalTo:@1];
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) {
if (!error) {
cell.discounts.hidden = YES;
}else{
cell.discounts.hidden = NO;
}}];
答案 0 :(得分:2)
服务中的布尔值看起来像@ 0或@ 1,所以你不能只测试真实性,因为:
if (@0) {
// this condition is true. that's surprising!
}
所以安全的测试方法是:
cell.imageView.hidden = [myParseObject[@"hidden"] boolValue];
编辑 - 现在我理解了这个误解。以下是解析的工作原理:
1)在本地创建一个对象:
PFObject *yes = [PFObject objectWithClassName:@"MyClass"];
此对象不会初始化任何值。所以它包含的任何bool都是0或NO。
2)在本地设置一些值:
yes[@"yesnocolumn"] = @1; // makes it true
// or = [NSNumber numberWithBool:YES];
3)保存。 (您也可以使用数据浏览器手动初始化对象。)
[yes saveInBackground];
4)获取一个对象。我认为这是给你带来麻烦的部分......只是创建一个本地对象并没有真正做多少。解析的想法是对象存储在云中。要获得它们,您需要一个PFQuery。
PFQuery *query = [PFQuery queryWithClassName:@"MyClass"];
[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error) {
// this will return all (up to 100 by default, MyClass objects that are
// saved in the cloud
if (!error && results.count) {
NSLog(@"the first object is %@", results[0]);
NSLog(@"the bool is %d", [results[0][@"yesnocolumn"] boolValue];
}
}];
这有意义吗?在本地设置它们或检索已初始化的远程副本之前,您不能指望该对象具有初始化的任何值。另请注意,如果在saveInBackground之后在下一个源代码行上运行查询,则无法获得保存的结果,因为保存将不会完成。开始在应用程序的一次运行中保存,然后在数据浏览器中查看,然后进行查询。
值得对their docs here进行全面审核。