【问题标题】:How do I get rid of a warning due to iteration through NSManagedObjects?由于遍历 NSManagedObject,我如何摆脱警告?
【发布时间】:2013-02-14 18:02:14
【问题描述】:

我有一个NSArrayController,里面装满了NSMutableDictionary 对象。以下代码可以正常工作,但我想摆脱我收到的编译器警告。 Collection expression type 'NSManagedObject *' may not respond to 'countByEnumeratingWithState:onjects:count:' 据我了解,我收到此错误是因为数组控制器内部可能还有不同类型的对象,它们没有键值。但就我而言,我只使用可变字典,所以应该没问题。

这是我的代码:

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

            if ([[NSString stringWithFormat:@"%@",[a valueForKey:key]] isEqualToString: @"1"])
            {
                checkedchecks += 1;
            }
        }
    }
    NSAlert *alert = [[NSAlert alloc] init] ;
    [alert setMessageText:[NSString stringWithFormat:@"%ld",(long)checkedchecks ]];
    [alert runModal];
}

我怎样才能摆脱这个烦人的警告?

【问题讨论】:

    标签: objective-c cocoa nsmutabledictionary


    【解决方案1】:

    如果NSMutableDictionary *NSManagedObject *,你为什么将a 输入为NSManagedObject *

    for (NSMutableDictionary *a in imagescontroller.arrangedObjects)
    

    可能是你想要的。

    【讨论】:

    • *a 是剩余的,已经修复,谢谢告知。而且你的改变也很有效!谢谢(现在感觉很愚蠢,因为答案很明显......)
    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2010-10-23
    • 2016-02-04
    相关资源
    最近更新 更多