简体   繁体   中英

Create NSArray from plist array

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM