0

我正在使用以下代码检查存储在名为“myDict”的字典文件中的值 1 或 0。在“block003stored”位置的值为 1,在所有其他位置为 0。如果我使用以下代码,我总是会为所有位置返回 0:

for (int i = 1 ; i < 100 ; i++) {
    if(myDict)
    {
    UIImageView *imageV = (UIImageView *)[self.view viewWithTag:i];
    int myInt = [[myDict objectForKey:@"block%.3istored"] intValue];
        NSLog (@"value of i %d", i);
        NSLog (@"myInt %d", myInt);
    if (myInt == 1) imageV.hidden = FALSE;
    }
}

}

但是,如果我将 objectForKey 更改为专门的 @"block003stored":

    int myInt = [[myDict objectForKey:@"block003stored"] intValue];

我得到了 1 返回的正确值。当我使用 %.3i 而不是 001、002、003 等时,我看不出为什么代码不起作用?

4

2 回答 2

1

循环中的代码使用 @"block%.3istored" 作为文字字符串。您编写的内容中没有任何内容可以使用i变量格式化字符串。将 NSStringstringWithFormat:视为动态构建密钥的一种方式。

于 2012-11-30T13:07:30.877 回答
1

在单独的行中尝试:

NSString *indexStr = [NSString stringWithFormat:@"block%.3dstored", i]; Then use the objectForKey:indexStr];

您要求字典使用“block%.3istored”键获取对象,该键不存在。您需要应用格式才能让 i 进入。

于 2012-11-30T21:04:27.010 回答