【问题标题】:How come reading from a plist fails in my iOS application?如何在我的 iOS 应用程序中从 plist 读取失败?
【发布时间】:2012-04-03 00:52:07
【问题描述】:

我正在尝试使用此功能在我的 iOS 应用中创建一个包含动物列表的 NSMutableDictionary

// puts animals into dictionary
- (void) putAnimalsFromPlistToDictionary
{
    NSBundle *bundle = [NSBundle mainBundle];    
    NSString *path = [bundle pathForResource:@"myAnimals" ofType:@"plist"];    
    myAnimalDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
    // I set a breakpoint here in XCode.
}

我将 myAnimals.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>elephant</string>
    <string>monkey</string>
    <string>cat</string>
</array>
</plist>

但是,当我到达断点(如我的评论中所列)时,我看到 myAnimalDictionary 为 nil。为什么?

【问题讨论】:

    标签: objective-c ios


    【解决方案1】:

    可能是因为您的 .plist 中有一个数组,但您正在尝试实例化一个可变字典实例。

    【讨论】:

    • 谢谢。哦,天哪,那个 plist 来自客户。我无法改变它。如果我不能制作字典,我能从中得到什么?我可以做一套吗?
    • 那你为什么要一个值的字典呢?数据以数组的形式列出。
    • 我不需要字典。我只需要以某种方式将动物列表加载到任何集合中,例如集合或数组。我认为您实际上是对的 - 字典意味着键值对,我认为我不需要。
    • 那就试试NSArray *animalArray = [[NSArray alloc] initWithContentsOfFile:path];
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多