• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Determining whether a dictionary is mutable or not
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Determining whether a dictionary is mutable or not


  • Subject: Re: Determining whether a dictionary is mutable or not
  • From: Pablo Pons Bordes <email@hidden>
  • Date: Fri, 14 Jan 2011 12:45:46 +0000

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@hidden)

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:

This email sent to email@hidden

References: 
 >Determining whether a dictionary is mutable or not (From: Tito Ciuro <email@hidden>)

  • Prev by Date: Re: Determining whether a dictionary is mutable or not
  • Next by Date: Core Data one to many insert question
  • Previous by thread: Re: Determining whether a dictionary is mutable or not
  • Next by thread: Core Data one to many insert question
  • Index(es):
    • Date
    • Thread