Xcode创建中的plist

时间:2011-07-14 12:45:27

标签: iphone xcode plist

当我为下面的链接创建一个简单的plist应用程序时:

http://iosdevelopertips.com/data-file-management/reading-a-plist-into-an-nsarray.html

当我调试它时...我正在获取我的plist文件的路径。但是,当我使用以下声明时

// Build the array from the plist  
NSMutableArray *array2 = [[NSMutableArray alloc] initWithContentsOfFile:path];

我在array2中没有任何价值......可能是什么问题?

4 个答案:

答案 0 :(得分:6)

这是我得到的最终解决方案......

当您使用第一个元素作为数组创建plist文件时,其XML内容将如下所示:

<?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>Root</key>
    <array>
        <string>Firecracker</string>
        <string>Lemon Drop</string>
        <string>Mojito</string>
    </array>
</dict>
</plist>

这里你有不必要的标签,而不是我们应该拥有的标签,因为你的根元素必须是数组...因为你正在接受NSMutableArray对象......

所以你的plist文件必须像这样

<?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">
    <array>
        <string>Firecracker</string>
        <string>Lemon Drop</string>
        <string>Mojito</string>
    </array>
</plist>

我检查过它的工作正常......

答案 1 :(得分:1)

问题可能是

  1. 该文件在指定路径中不存在,您在nil中获得array2
  2. 该文件存在但由于某些格式损坏而无法正确读取,并且nil中也会显示array2
  3. 文件存在且格式正确,但没有值,你得到一个空数组。
  4. 使用NSString *path = [[NSBundle mainBundle] pathForResource:@"DrinkArray" ofType:@"plist"];时,它假设您的应用包内有一个名为“DrinkArray”('DrinkArray.plist')的正确形成的plist文件。确保您的文件也被复制到应用程序包中(在Xcode中检查,单击您的项目,然后构建阶段,您的文件应出现在'Copy Bundle Ressources'中)。

    我猜你得到nil作为文件的路径,因此在array2中。尝试记录您的路径字符串以进行检查。

答案 2 :(得分:0)

我想你可以尝试这样的事情:

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    NSMutableArray *array = [dict objectForKey:@"Root"];

    // Show the string values  
    for (NSString *str in array)
    {
        NSLog(@"--%@", str);
    }

如果有帮助,请放下一行。 :)

干杯, 卡米尔

答案 3 :(得分:0)

在xcode 5中&gt;确保该文件位于编译源区域中。 enter image description here