首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSArray initWithContentsOfFile返回nil

NSArray initWithContentsOfFile返回nil
EN

Stack Overflow用户
提问于 2012-06-04 05:59:16
回答 2查看 4.4K关注 0票数 2

我正在尝试使用initWithContentsOfFile将plist文件读取到NSArray中,如here所述

我的代码如下所示

代码语言:javascript
复制
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *plistPath = [bundle pathForResource:
                           @"routes" ofType:@"plist" ];
    routes = [[NSArray alloc] initWithContentsOfFile:plistPath ];
    NSLog:(@"contents of myArray %@", routes);

routes.plist有一个非常简单的数组结构和2个字符串值

代码语言:javascript
复制
<?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>1</string>
        <string>2</string>
    </array>
</dict>
</plist>

一切似乎都很好。plistPath使用正确的值进行初始化,这意味着文件被复制到捆绑包中,并且可以读取。但是routes = [[NSArray alloc] initWithContentsOfFile:plistPath ];返回0x0值。我认为这相当于nil

我的代码出了什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-04 06:02:04

实际上你的plist是一本字典。

更改此设置:

代码语言:javascript
复制
<dict>
    <key>Root</key>
    <array>
        <string>1</string>
        <string>2</string>
    </array>
</dict>

要这样做:

代码语言:javascript
复制
<array>
    <string>1</string>
    <string>2</string>
</array>
票数 9
EN

Stack Overflow用户

发布于 2012-06-04 06:02:22

我认为你想做这样的事情:

代码语言:javascript
复制
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:
                       @"routes" ofType:@"plist"];

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath];
NSArray *routes = [dictionary objectForKey:@"Root"];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10874254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档