根据布尔值分析自定义单元格显示图像

时间:2014-06-02 22:40:59

标签: ios parsing boolean parse-platform

我想根据布尔值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;

        }}];

1 个答案:

答案 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进行全面审核。