Iphone 为什么这个for循环不执行?

Iphone 为什么这个for循环不执行?,iphone,objective-c,xcode,loops,uipickerview,Iphone,Objective C,Xcode,Loops,Uipickerview,我有一个选择器视图控制器来选择化学源和可能的浓度。如果源没有浓度,它只显示一个选择器。它由一个以源类型名称为键的NSDictionary和一个名为Chemical的自定义模型对象填充,该对象有四个属性,两个NSString,一个float和一个BOOL 当我用包含两个成分的字典触发这个时,我想从所表示的化学物质中提取四个值。请注意,我使用前两个属性的值填充选择器,但不是float或BOOL。我遍历了第一个组件中选择的键的数组,并根据键/值数组中每个化学品的chemConcentration属性检

我有一个选择器视图控制器来选择化学源和可能的浓度。如果源没有浓度,它只显示一个选择器。它由一个以源类型名称为键的NSDictionary和一个名为Chemical的自定义模型对象填充,该对象有四个属性,两个NSString,一个float和一个BOOL

当我用包含两个成分的字典触发这个时,我想从所表示的化学物质中提取四个值。请注意,我使用前两个属性的值填充选择器,但不是float或BOOL。我遍历了第一个组件中选择的键的数组,并根据键/值数组中每个化学品的chemConcentration属性检查了第二个组件中的字符串。当化学浓度匹配时,我知道我有正确的化学物质,并且我可以得到它的属性以返回

问题是,即使我知道我得到了for循环,它似乎被跳过了。打印前的NSLog,但里面的没有。sourceConstant和sourceIsLiquid保持为0.0和否


初始化循环计数i

for (int i = 0; i<[selectedChemicalGroup count]; i++)

执行以下操作,您将了解原因:

int i;
NSLog(@"%d", i);

您需要初始化变量i:for int i=0

但有一种更好的方法,使用快速枚举:

for (MyChemicalGroupClass *group in selectedChemicalGroup) {
    if ([selectedConcentration isEqualToString:[group chemConcentration]]) {
    ...
    }
}
for (MyChemicalGroupClass *group in selectedChemicalGroup) {
    if ([selectedConcentration isEqualToString:[group chemConcentration]]) {
    ...
    }
}