how to remove object from NSDictionary
Asked Answered
A

4

34

Hi i am having a NSdictionary in which i am adding a array with key "countries ". Now i take the value of this dictionary into array and sort the array in alpahbatical order .Now i want to add this array into my Dictionary (that is i want to update my dictionary with new sorted array and remove the old array from it )........ how to do this

My code is as follows

NSArray *countriesToLiveInArray = [NSArray arrayWithObjects:@"Iceland", @"Greenland", @"Switzerland", @"Norway", @"New Zealand", @"Greece", @"Italy", @"Ireland", nil];
NSDictionary *countriesToLiveInDict = [NSDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"];


NSArray *tmpary = [countriesToLiveInDict valueForKey:@"Countries"];
NSLog(@"ary value is  %@",ary);
NSArray *sortedArray = [tmpary sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"sortedArray is %@",sortedArray);

Here i want to remove the countriesToLiveInArray and replace it with sortedArray with same key value i.e. Countries Thanks in advance..

Anthropomorphic answered 7/10, 2010 at 7:31 Comment(2)
Why not just sort the array before adding it the to dictionary?Surratt
Use objectForKey: not valueForKey: valueForKEy: is technically for KVC and it's very slightly slower.Marandamarasca
T
73

First you need to use a NSMutableDictionary and put this code :

[countriesToLiveInDict removeObjectForKey:@"Countries"];
[countriesToLiveInDict setObject:sortedArray forKey:@"Countries"];
Trashy answered 7/10, 2010 at 7:38 Comment(1)
You don't need to remove the previous object for the key. -setObject:forKey: automatically releases the previous object, if called on a kety that already exists.Marandamarasca
C
6

First of all make your NSDictionary to NSMutableDictionary & then write the following line of code

[countriesToLiveInDict removeObjectForKey:@"Countries"];

This will definitely resolve your issue.

Conjugal answered 7/10, 2010 at 7:39 Comment(2)
Is setting the countriesToLiveInDict = necessary?Lissettelissi
Don't do this, the documentation states -[NSMutableDictionary removeObjectForKey:] returns void. See: - (void)removeObjectForKey:(KeyType)aKeyCynthia
R
1

NSDictionary cannot remove anything, please use NSMutableDictionary, like this:

NSMutableDictionary *countriesToLiveInDict = [NSMutableDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"];
Relief answered 2/12, 2011 at 3:35 Comment(0)
L
1

for Swift 3 as @MathieuF answered it First you need to use a NSMutableDictionary and put this code :

countriesToLiveInDict.removeObject(forKey: "Countries")

i post my answer as i was search for same question and get inspired by @MathieuF

Laclos answered 22/2, 2017 at 15:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.