我怎么知道零的返回值对于ObjectiveD中的NSDictionary的objectForKey方法意味着什么?

Nos*_*tap 1 objective-c nsdictionary

NSDictionary的文档说如果NSDictionary不包含您的密钥,该方法objectForKey将返回nil; 然而,零是不是零?如果是这样,我怎么知道返回值是否意味着字典包含映射到零的键或者该键是否不存在?

and*_*n22 7

NSDictionaries(实际上,所有Cocoa集合对象)只能包含Objective-C对象,而不能包含C基元int.因此,如果您要存储0在字典中,您可以这样做:

[myDictionary setObject:[NSNumber numberWithInt:0] forKey:@"myKey"];
Run Code Online (Sandbox Code Playgroud)

因此,检索它将是这样的:

NSNumber* resultObj = [myDictionary objectForKey:@"myKey"];
if (resultObj == nil)
{
    //Key didn't exist
}
else
{
    int result = [resultObj intValue];
    //Now do your work.
}
Run Code Online (Sandbox Code Playgroud)

这种在包装中"包装"C基元以将其存储在集合中,然后在另一端"展开"它的概念在Cocoa中非常常见.(您可能还会考虑NSValue是否尝试使用非数字值.)