从plist数组创建NSArray

时间:2010-10-25 21:18:23

标签: iphone objective-c

我需要从plist数组中提取数据并将其放入NSArray中。但似乎没有用。

这是我的主要文件:

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];

我的plist文件。命名:htmlData.plist

<plist version="1.0">
<dict>
    <key>tagName</key>
        <array>
            <string>&lt;html&gt;</string>
            <string>&lt;body&gt;</string>
        </array>
</dict>
</plist>

它应该将self.sitesArray设置为等于@"<html>", @"<body>, nil;,但它无效。

1 个答案:

答案 0 :(得分:5)

首先,要了解dictionarytempDictionary指向同一个对象,并且在释放后无法访问该对象。因此,当您执行[tempDictionary release]时,字典将被释放。然后无法通过dictionary pointe访问它。

对于此代码,请尝试:

NSString *path = [[NSBundle mainBundle] pathForResource:@"htmlData" ofType:@"plist"];
NSDictionary *dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];  
self.sitesArray = [dictionary objectForKey:@"tagName"];
[dictionary release];

sitesArray的setter应该保留数组,或者[dictionary release]的调用会释放它。