Array不会从plist加载数据

时间:2011-04-10 03:16:59

标签: iphone objective-c nsarray plist

我不知道究竟是我的问题,因为我已经使用了一段时间这种方法现在,从来没有过这样的问题了。

基本上,正如标题所说。此代码从位于“资源”组中的plist加载数据

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"];
myArray = [[NSArray alloc]initWithContentsOfFile:myFile];
NSLog(@"%@", myArray);

显示(null)。谁知道为什么?

我在同一个ViewController中有另外一个设置并且工作得很好。然而,这个特定的钳子不会加载。而且我还甚至删除plist中和刚创建的副本从其他的一个,以确保不是结构问题。

我这样做的方式不对?我应该使用FileManager吗?

更新---------------------------------------------- ---------------------------

好的,我无法相信我要说的话。洛尔

我正在使用XCode 4,在Xcode中编辑plists的方式与Xcode 3.x不同。由于在早期版本的你选择的Plist根为W / E你希望他们(阵列,字典等),我的问题是,我试图加载到一个NSArray的plist中实际上构成为字典。但是我从来没有在Xcode中看到了这一点,我不知道如何看的比浏览器使用TextEdit或一些其他文本编辑器的内容本等。

我必须说,非常愚蠢。有谁知道为什么的XCode 4将不显示的plist的根本方式的XCode 3.x的呢?

XCode 3.x:http://dl.dropbox.com/u/919254/XCode3.png

XCode 4:http://dl.dropbox.com/u/919254/Screen%20shot%202011-04-10%20at%202.30.35%20AM.png

3 个答案:

答案 0 :(得分:3)

请改用词典。我有NSArrays和属性列表的未定义行为。 e.g。

NSString *myFile = [[NSBundle mainBundle] pathForResource:@"myList" ofType:@"plist"];
NSMutableDictionary* myDict = [[NSMutableDictionary alloc]initWithContentsOfFile:myFile];
NSLog(@"%@", myDict);

答案 1 :(得分:1)

我有类似的情况。解决:

  1. 在树中选择* .plist
  2. 调用上下文菜单
  3. 选择“使用外部编辑器打开”
  4. root将可见 - 将“Class”更改为“Array”
  5. 保存

答案 2 :(得分:0)

你看起来没错。检查文件是否在正确的目录中,并具有内容。你可以在你的时候想要NSLog myFile。