【问题标题】:get list of checked checkboxes through arraycontroller通过arraycontroller获取选中的复选框列表
【发布时间】:2013-02-14 15:18:24
【问题描述】:

我有一个绑定到 tableview 的 arraycontroller。我需要返回表中检查的复选框的数量。数组控制器充满了 nsmutabledictionaries。这是我到目前为止的代码:

-(IBAction)getlist:(id)sender{
checkedchecks = 0;
for (NSManagedObject *a in imagescontroller.arrangedObjects)
{

 ////MISSING CODE GOES HERE
}
NSAlert *alert = [[NSAlert alloc] init] ;
[alert setMessageText:[NSString stringWithFormat:@"%ld",(long)checkedchecks ]];
[alert runModal];

}

现在我需要知道如何计算所有布尔值并设置为yes..谢谢!

【问题讨论】:

    标签: objective-c cocoa boolean iteration nsarraycontroller


    【解决方案1】:

    实际上,我认为您不必遍历对象。

    NSUInteger checked = [(NSNumber*)[imagesController.arrangedObjects
                    valueForKeyPath:@"@sum.boolProperty"] integerValue];
    

    这是一种 hack,因为 BOOL 将被解释为 0 或 1。
    语义上更正确的方法是。

    NSUInteger checked = [imagesController.arrangedObjects
                     filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:
                       @"boolProperty == %@", @YES]].count;
    

    这是假设您有一个数组 (arrangedObjects),其中包含 NSManagedObject(或其子类)的实例。这些对象有一个名为boolProperty 的属性,类型为NSNumber(这是托管对象中BOOL 值的标准包装器)。当显示一行时,如果此boolProperty@YES,则将其标记为选中。如果您更改复选标记(例如通过选择行),则应更新模型:应检索适当的托管对象并切换boolProperty

    【讨论】:

    • 谢谢!但似乎不起作用,总是得到0!我还收到警告:隐式转换会丢失整数精度。 NSUinteger 到 int
    • 在你的第一个我收到消息:在“id”类型的对象上找不到属性“intValue”
    • 查看我的更正。这些都是小问题。如果你得到零,你没有正确保存检查的布尔值。
    • 您好!仍然得到 0。“保存 chcked bools 属性”是什么意思?我使用此代码将数据添加到数组控制器:[imgdtl setObject:[NSNumber numberWithBool: YES] forKey: [NSString stringWithFormat:@"%@",[a valueForKey:@"agency"]]];
    • 对不起,但即使在谷歌搜索之后我仍然不明白你检查的布尔部分..你能解释一下吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2017-11-19
    • 2013-06-24
    • 1970-01-01
    相关资源
    最近更新 更多