想象一下,您有一个NSDictionary
(不是Dictionary
)包含不同类型的键和值的方案,例如NSNumber
和另一个NSDictionary
。并且可能有几个嵌套NSDictionary
。您现在需要查看此结构中的每个字典(无论嵌套多远)寻找特定键,并在找到它的任何位置,用不同的值替换它的值。
如何在Swift中实现 - 特别是Swift 2?
我认为可以创建此结构的深度可变副本(NSMutableDictionary
),然后可能使用递归以便在必要时处理和修改每个字典。完成后,用修改后的可变结构替换原始结构。如果这是一个很好的方法,那么为了使用它,如何执行此结构的深度可变副本?或者如何才能实现这一目标?
例如,这可能是字典:
{
NUMFRIENDS = 3;
GREETING =
{
HELLO = WORLD;
WHATSUP = DUDE;
...
}
HELLO = WORLD;
...
}
您希望找到所有HELLO
个密钥,并将其值替换为UNIVERSE
。
答案 0 :(得分:0)
在Objective-C中,我一直在使用这个技巧:
[NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self]]
使用NSCoding协议自动生成所有对象的深层副本。
所以在Swift中,同样的技巧应该有效:
NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self))