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