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

时间:2010-10-09 06:09:18

标签: iphone objective-c properties plist nsdictionary

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

以下行返回nil(“字典为空”到控制台)。

NSLog(@"The dictionary is %@",[NSDictionary dictionaryWithContentsOfFile:@"myFile"]);

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>

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:36)

来自文档......

  

+ (id)dictionaryWithContentsOfFile:(NSString *)path

     

<强>参数

     

路径

     

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

     

返回值

     

包含路径中字典的新字典,如果存在文件错误或文件内容是字典的无效表示,则为nil。

所以,你需要构建一个plist文件的完整路径(或传递一个适当的相对路径。如果“myFile”是一个合适的相对路径,我会非常惊讶)。如果你构建一个正确的路径,但仍然得到nil,那么你可能得到了一个无效的plist文件。

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

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

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

相关问题