diff options
author | bamse16 <marius@marius.me.uk> | 2009-04-11 09:14:42 +0000 |
---|---|---|
committer | bamse16 <marius@marius.me.uk> | 2009-04-11 09:14:42 +0000 |
commit | 1824ae6360c9ce1897e75404163d39df08ee5fbf (patch) | |
tree | 0eca1f6f4cb42e08f25e44a4683aecfb5881aac2 /Source/NSDictionary_DeepMutableCopy.m | |
parent | 41f8cde09ff77996339cabc71517496976beee2e (diff) | |
download | sequelpro-1824ae6360c9ce1897e75404163d39df08ee5fbf.tar.gz sequelpro-1824ae6360c9ce1897e75404163d39df08ee5fbf.tar.bz2 sequelpro-1824ae6360c9ce1897e75404163d39df08ee5fbf.zip |
Added printing support via WebKit WebView
Diffstat (limited to 'Source/NSDictionary_DeepMutableCopy.m')
-rw-r--r-- | Source/NSDictionary_DeepMutableCopy.m | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Source/NSDictionary_DeepMutableCopy.m b/Source/NSDictionary_DeepMutableCopy.m new file mode 100644 index 00000000..a5a49333 --- /dev/null +++ b/Source/NSDictionary_DeepMutableCopy.m @@ -0,0 +1,43 @@ +// +// NSDictionary_DeepMutableCopy.m +// +// Created by Matt Gemmell on 02/05/2008. +// Copyright 2008 Instinctive Code. All rights reserved. +// + +#import "NSDictionary_DeepMutableCopy.h" + + +@implementation NSDictionary (DeepMutableCopy) + + +- (NSMutableDictionary *)deepMutableCopy; +{ + NSMutableDictionary *newDictionary; + NSEnumerator *keyEnumerator; + id anObject; + id aKey; + + newDictionary = [self mutableCopy]; + // Run through the new dictionary and replace any objects that respond to -deepMutableCopy or -mutableCopy with copies. + keyEnumerator = [[newDictionary allKeys] objectEnumerator]; + while ((aKey = [keyEnumerator nextObject])) { + anObject = [newDictionary objectForKey:aKey]; + if ([anObject respondsToSelector:@selector(deepMutableCopy)]) { + anObject = [anObject deepMutableCopy]; + [newDictionary setObject:anObject forKey:aKey]; + [anObject release]; + } else if ([anObject respondsToSelector:@selector(mutableCopyWithZone:)]) { + anObject = [anObject mutableCopyWithZone:nil]; + [newDictionary setObject:anObject forKey:aKey]; + [anObject release]; + } else { + [newDictionary setObject:anObject forKey:aKey]; + } + } + + return newDictionary; +} + + +@end |