1

我有一个 NSObject 类,其中定义了一个 init 方法,如下所示,

- (id)initWithPlistName:(NSString *)plistFileName{
    if (self = [super init]) {
        plistName = plistFileName;
        plistContent = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] 
                                                                pathForResource:plistName ofType:@"plist"]]; // this plistContent array is not allocating in memory
    }
    return self;
}

我在我的应用程序AppDelegatedidFinishLaunchingWithOptions方法中调用此方法,plistContent是我的NSArray类型的iVar ,但每当控制权进入 plistContent alloc init 行并返回 self 时,没有为我的数组分配内存。这里可能发生了什么问题,提前感谢任何帮助。

4

3 回答 3

1

检查文件是否存在:

NSString *path = [[NSBundle mainBundle] pathForResource:plistName ofType:@"plist"];
if(path)
{
   plistContent = [[NSArray alloc] initWithContentsOfFile:path]; 
}
else
{
  NSLog(@"File Not exists");
}
于 2012-09-25T12:49:00.710 回答
1

我想您还没有将 plist fly 中 plist 根键的数据类型从字典更改为数组

于 2012-09-25T12:52:45.360 回答
0

试试这个

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"plistName" ofType:@"plist"];
NSDictionary *myDict = [[NSDictionary alloc] initWithContentsOfFile:filePath];
NSArray *array = [NSArray arrayWithArray:[myDict objectForKey:@"Root"]];
于 2012-09-25T12:41:16.623 回答