从NSDictionary枚举BOOL

时间:2011-08-10 00:58:39

标签: xcode plist nsdictionary enumeration boolean

我有一个加载到我的Xcode项目中的.plist文件。我在测试时已成功将其放入iPhone的文档目录中。当我将内容转储到NSMutableDictionary,并尝试枚举它时,我得到EXC_BAD_ACCESS崩溃。它们的键都具有与其值相关联的BOOL。我做错了什么?

我的代码现在:

for (id key in achDict) {

    NSLog(@"Achievement:%@ done:%@", key, [[achDict objectForKey:key] boolValue]);

}

这总是在崩溃中返回EXC_BAD_ACCESS。

1 个答案:

答案 0 :(得分:2)

你的NSLog期待两个对象,但你传给它一个字符串'key'和一个Integer。 Bool Value不是Object,它返回一个Integer值(0表示False,1表示True)。 %@用于Objective C Objects。而是使用%d来获取整数值,例如C布尔值。

将您的NSLog语句更改为:

NSLog(@"Achievement:%@ done:%d", key, [[achDict objectForKey:key] boolValue]);

Apple的String Programming Guide有一个关于String Modifiers的有用部分