0

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>&lt;html&gt;</string>
            <string>&lt;body&gt;</string>
        </array>
</dict>
</plist>

It should set self.sitesArray equal to @"<html>", @"<body>, nil; but it is not working.

1 Answer 1

5

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.

Sign up to request clarification or add additional context in comments.

1 Comment

and the next memory managment bug is only on line away... but after this it's two lines

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.