NSDictionary键/值概念

时间:2014-07-01 07:10:22

标签: ios iphone objective-c

如果密钥确实存在且执行了以下代码,则删除对象并将密钥的值设置为 nil ,否则它也会删除密钥。< / p>

[myDetails removeObjectForKey:@"Name"];

如果密钥已经存在,会发生什么?它会产生异常/错误吗?

3 个答案:

答案 0 :(得分:2)

首先你的意思是NSMutableDictionary,而不是NSDictionary,它是不可变的,如果密钥确实存在,它将同时删除密钥和值。如果密钥不存在,则不会发生任何事情(不会引发异常)。

来自docs

  

<强>讨论

     

如果aKey不存在则不执行任何操作。

答案 1 :(得分:1)

  

如果aKey不存在则不执行任何操作。

来自Apple documentation

为什么不在问之前阅读文档?

答案 2 :(得分:1)

它也将删除该键和Key的对象。

以下是执行NSMutableDictionary

之前[getDataInSideBySide removeObjectForKey:@"1"];的输出
getDataInSideBySide=={
    1 =     (
        "iProgress23807pm.png",
        "iProgress23822pm.png",
        "iProgress55154pm.png",
        "iProgress65626pm.png",
        "iProgress65639pm.png",
        "iProgress125224pm.png"
    );
    2 =     (
        "iProgress125217pm.png"
    );

并在执行[getDataInSideBySide removeObjectForKey:@"1"];

之后
getDataInSideBySide=={
    2 =     (
        "iProgress125217pm.png"
    );
}

当我再次执行[getDataInSideBySide removeObjectForKey:@"1"];时,输出相同

getDataInSideBySide=={
        2 =     (
            "iProgress125217pm.png"
        );
    }

这意味着它对NSMutableDictionary无效。