在ViewDidLoad上将plist加载到NSArray中

时间:2011-08-27 02:18:16

标签: iphone ios xcode ipad

我正在尝试在XCode 4中为iPad应用程序加载一个简单的plist文件。目标是它将被加载到拆分视图的表部分。

我的项目结构和plist看起来如下:

enter image description here

然后我在RootViewController的接口中声明一个数组:

#import <UIKit/UIKit.h>

@class DetailViewController;

@interface RootViewController : UITableViewController {
    NSArray *sites;
}

@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;

@end

然后,我在viewDidLoad上尝试加载plist:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.clearsSelectionOnViewWillAppear = NO;
    self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);

    NSBundle *bundle = [NSBundle mainBundle];
    //NSLog(bundle);
    NSString *path = [bundle pathForResource:@"StoredSites" ofType:@"plist"];
    NSLog(path);

    sites = [[NSArray alloc] initWithContentsOfFile:path];
    NSLog(@"%d", [sites count]);

}

NSLog语句首先返回看似有效路径的内容,但在尝试使用文件内容加载NSArray时,它返回的计数为0:

enter image description here

我检查了构建阶段,看看文件引用是否出现,似乎没问题:

enter image description here

我知道这一定是一个简单的问题,但由于某种原因,我没有看到缺少的东西!

我很感激帮助 -

2 个答案:

答案 0 :(得分:1)

您可能希望使用NSDictionary,因为方法pathForResource:ofType:使用的示例代码为here

我不完全确定为什么它不能使用NSArray,但是plist可能没有完全正确格式化? documentation for NSArray表示initWithContentsOfFile:作为参数引用:

  

包含数组字符串表示形式的文件的路径   由writeToFile生成:atomically:方法。

同样,我不太确定。希望有帮助!

答案 1 :(得分:1)

问题是plist XML被包装在字典中而不仅仅是一个简单的数组数组 -

DShah在此处介绍:plist in xcode creation problem