我正在尝试在XCode 4中为iPad应用程序加载一个简单的plist文件。目标是它将被加载到拆分视图的表部分。
我的项目结构和plist看起来如下:
然后我在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:
我检查了构建阶段,看看文件引用是否出现,似乎没问题:
我知道这一定是一个简单的问题,但由于某种原因,我没有看到缺少的东西!
我很感激帮助 -
答案 0 :(得分:1)
您可能希望使用NSDictionary
,因为方法pathForResource:ofType:
使用的示例代码为here。
我不完全确定为什么它不能使用NSArray
,但是plist
可能没有完全正确格式化? documentation for NSArray表示initWithContentsOfFile:
作为参数引用:
包含数组字符串表示形式的文件的路径 由writeToFile生成:atomically:方法。
同样,我不太确定。希望有帮助!
答案 1 :(得分:1)
问题是plist XML被包装在字典中而不仅仅是一个简单的数组数组 -
DShah在此处介绍:plist in xcode creation problem