如何将 [__NSArrayI integerValue] 转换为整数值?

How To convert [__NSArrayI integerValue] to integer value?

这是我用来将对象转换为整数值的行,我在 For 循环中放置了这段代码

   NSInteger tag=[[arrFullSubCategory valueForKey:@"category"] integerValue];

在 arrFullSubCategory 内:

(
        {
        category = 35;
        image = "images/Hatchback.jpg";
        name = Hatchback;
        parent = 20;
    },
        {
        category = 36;
        image = "images/Sedan.jpg";
        name = Sedan;
        parent = 20;
    },
        {
        category = 37;
        image = "images/SUV.jpg";
        name = SUV;
        parent = 20;
    }
)

异常:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI integerValue]: unrecognized selector sent to instance 0x7ff4ba58f930'

在 for 循环中尝试这段代码,希望对您有所帮助

NSInteger tag=[[[arrFullSubCategory objectAtIndex:i] valueForKey:@"category"] integerValue];

arrFullSubCategory 是一个数组,您应该首先到达它的元素。比你将有 NSDictionary 个对象。之后,您可以访问 category 元素。所以我认为你的代码应该是这样的:

for (NSInteger i = 0; i < arrFullSubCategory.count; ++i) {
    NSInteger tag=[[[arrFullSubCategory objectAtIndex:i] valueForKey:@"category"] integerValue];
}

你有字典数组,所以你使用下面的代码

[[[arrFullSubCategory objectAtIndex:] objectForKey:@"category"] integerValue] 

错误解释:

该错误意味着您有一个 数组 ,并且数组不响应 integerValue

您的变量 arrFullSubCategory 引用了一个数组(包含 3 个元素),每个元素都是一个字典。如果您在一个字典数组上调用 valueForKey:,那么将对每个字典执行键查找,并为结果构造一个数组。在您的情况下,结果(使用文字语法)是数组:

@[ @35, @36, @37 ]

这个数组是否直接对您有用,或者您是否应该一次访问数组一个元素——使用循环或方法调用每个元素的块等——将取决于您的目标是什么。

HTH