Reputation: 2073
I need to pull out data from a plist array and put it in an NSArray. But it seems to not be working.
Here is my main file:
NSString *path = [[NSBundle mainBundle] pathForResource:@"htmlData" ofType:@"plist"];
NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
dictionary = tempDictionary;
[tempDictionary release];
NSMutableArray *nameArray = [[NSMutableArray alloc] init];
nameArray = [dictionary objectForKey:@"tagName"];
self.sitesArray = nameArray;
[nameArray release];
My plist file. Named: htmlData.plist
<plist version="1.0">
<dict>
<key>tagName</key>
<array>
<string><html></string>
<string><body></string>
</array>
</dict>
</plist>
It should set self.sitesArray
equal to @"<html>", @"<body>, nil;
but it is not working.
Upvotes: 0
Views: 1475
Reputation: 15857
First, understand that dictionary
and tempDictionary
are pointing to the same object, and you cannot access the object after you release it. So when you do [tempDictionary release]
, the dictionary is released. It cannot be then accessed through the dictionary
pointe.
For this code, try:
NSString *path = [[NSBundle mainBundle] pathForResource:@"htmlData" ofType:@"plist"];
NSDictionary *dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
self.sitesArray = [dictionary objectForKey:@"tagName"];
[dictionary release];
Your setter for sitesArray
should be retaining the array, or the call to [dictionary release]
will release it.
Upvotes: 5