我可以更改NSDictionaries密钥吗?

Mar*_*eid 3 cocoa dictionary objective-c foundation

我有一个NSDictionary对象,由NSMutableStrings填充其键和对象.我已经能够通过使用setString:方法更改原始NSMutableString来更改密钥.然而,无论最初用于设置密钥的字符串的内容如何,​​它们的密钥都保持不变.

我的问题是,密钥是否受到保护而不被更改意味着除非我将其删除并将另一个添加到字典中,否则它将始终相同?

谢谢.

ken*_*ytm 10

-copy设置项目时键是'd',因此您无法在之后更改它是无用的.

向词典添加条目的方法 - 无论是初始化的一部分(对于所有词典)还是在修改期间(对于可变字典) - 复制每个键参数(键必须符合NSCopying协议)并将副本添加到字典中.每个对应的值对象都会收到一条保留消息,以确保在字典通过之前不会释放它.

您可以将CFDictionary与kCFTypeDictionaryKeyCallBacks一起使用,或者只需替换该项:

id value = [dictionary objectWithKey:oldKey];
[dictionary setObject:value withKey:newKey];
[dictionary removeObjectForKey:oldKey];
Run Code Online (Sandbox Code Playgroud)