想象一下您有一个包含不同类型的键和值的 NSDictionary
(不是 Dictionary
)的场景,例如 NSNumber
和另一个 NSDictionary
。并且可能有多个嵌套的 NSDictionary
。您现在需要查看此结构中的每个字典(无论嵌套多远)以查找特定键,并在找到它的任何地方将其值替换为不同的值。
这如何在 Swift 中实现 - 特别是 Swift 2?
我认为可以创建此结构的深度可变副本 (NSMutableDictionary
),然后可能使用递归来处理和修改每个字典(如有必要)。完成后,将原始结构替换为修改后的可变结构。如果这是一种好方法,那么如何执行此结构的深层可变副本才能使用它呢?或者还可以如何实现?
例如,这可能是字典:
{
NUMFRIENDS = 3;
GREETING =
{
HELLO = WORLD;
WHATSUP = DUDE;
...
}
HELLO = WORLD;
...
}
并且您希望找到所有 HELLO
键并将它们的值替换为 UNIVERSE
。
最佳答案
在 Objective-C 中我一直在使用这个技巧:
[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]]
这会使用 NSCoding 协议(protocol)自动对所有对象进行深度复制。
所以在 Swift 中同样的技巧应该起作用:
NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self))
关于ios - 生成 NSDictionary 的深拷贝以修改嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31870557/