Iphone dictionaryWithContentsOfFile从我的属性列表文件返回nil

Iphone dictionaryWithContentsOfFile从我的属性列表文件返回nil,iphone,objective-c,properties,plist,nsdictionary,Iphone,Objective C,Properties,Plist,Nsdictionary,我正在学习如何使用plist文件在iPhone应用程序中存储数据。我在这个网站上读了很多关于plist和dictionaryWithContentsOfFile的问题,但看不出我做错了什么 下一行返回nil(“对于控制台,dictionary为null”) myFile.plist文件位于resources文件夹中,包含几个字符串: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//

我正在学习如何使用plist文件在iPhone应用程序中存储数据。我在这个网站上读了很多关于plist和dictionaryWithContentsOfFile的问题,但看不出我做错了什么

下一行返回nil(“对于控制台,dictionary为null”)

myFile.plist文件位于resources文件夹中,包含几个字符串:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>john</string>
    <key>aname</key>
    <string>jen</string>
</dict>
</plist>

名称
厕所
阿纳姆
珍

我在这里遗漏了什么吗?

从文档中

+(id)字典及其内容文件:(NSString*)路径

参数

路径

完整或相对路径名。路径标识的文件必须包含根对象为字典的属性列表的字符串表示形式

返回值

在路径处包含词典的新词典,如果存在文件错误或文件内容是词典的无效表示形式,则为nil

因此,您可能需要构造到plist文件的完整路径(或者传入一个适当的相对路径。如果“myFile”是一个适当的相对路径,我会非常惊讶)。如果您构建了一个正确的路径,但仍然返回了
nil
,那么您可能得到了一个无效的plist文件

获取资源文件夹中文件路径的最简单方法如下:

NSString * plistPath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"plist"];

这将在资源文件夹中为名为“myFile.plist”的文件构建路径。

+1用于mainBundle方法。当人们试图找到他们的捆绑包路径(当然没有
[NSBundle mainBunde]
)并构建自己的资源路径时,我的眼睛很痛。。。
NSString * plistPath = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"plist"];