Hello,
To determine if a dictionary is mutable or Inmutable you just need to use the
isKindOfClass method, instead of use respondsToSelector.
I did a test to reproduce your problem and couldn't reproduce your problem, so
my conclusion is that actually you are receiving a mutable Dictionary when you
think is unMutable
I hope it helps you.
NSDictionary *unmutableDictionary;
NSMutableDictionary *mutableDictionary;
NSDictionary *testDictionary;
Class ummutableClass;
Class mutableClass;
ummutableClass = [NSDictionary class];
mutableClass = [NSMutableDictionary class];
unmutableDictionary = [NSDictionary dictionary];
mutableDictionary = [NSMutableDictionary dictionary];
/**
To test the situation where the function input parameter is a
NSDictionary and be able
to detect if the passed object is mutable or unmutable we use the
testDictionary as "input parameter"
*/
/**
An Inmutable dictionary shoud only be Inmutable Class
*/
//TEST Inmutable Dictionary
testDictionary = unmutableDictionary;
if ([testDictionary isKindOfClass: ummutableClass] == YES) {
NSLog(@"Test %d.%@ OK", 1,@"A");
} else {
NSLog (@"Test %d.%@ ERROR", 1,@"A");
}
if ([testDictionary isKindOfClass: mutableClass] == NO) {
NSLog(@"Test %d.%@ OK", 1,@"B");
} else {
NSLog (@"Test %d.%@ ERROR", 1,@"B");
}
if ([testDictionary respondsToSelector:@selector(setObject:forKey:)] ==
NO) {
NSLog(@"Test %d.%@ OK", 1,@"C");
} else {
NSLog (@"Test %d.%@ ERROR", 1,@"C");
}
/**
A Mutable dictionary shoud be from both classes (Mutable and inmutable)
*/
//Test Mutable Dictionary
testDictionary = mutableDictionary;
if ([testDictionary isKindOfClass: ummutableClass] == YES) {
NSLog(@"Test %d.%@ OK", 2,@"A");
} else {
NSLog (@"Test %d.%@ ERROR", 2,@"A");
}
if ([testDictionary isKindOfClass: mutableClass] == YES) {
NSLog(@"Test %d.%@ OK", 2,@"B");
} else {
NSLog (@"Test %d.%@ ERROR", 2,@"B");
}
if ([testDictionary respondsToSelector:@selector(setObject:forKey:)] ==
YES) {
NSLog(@"Test %d.%@ OK", 2,@"C");
} else {
NSLog (@"Test %d.%@ ERROR", 2,@"C");
}
OUTPUT:
2011-01-14 12:31:31.970 Dictionary TEST[2672:207] Test 1.A OK
2011-01-14 12:31:31.972 Dictionary TEST[2672:207] Test 1.B OK
2011-01-14 12:31:31.973 Dictionary TEST[2672:207] Test 1.C OK
2011-01-14 12:31:31.988 Dictionary TEST[2672:207] Test 2.A OK
2011-01-14 12:31:31.994 Dictionary TEST[2672:207] Test 2.B OK
2011-01-14 12:31:31.994 Dictionary TEST[2672:207] Test 2.C
OK_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]