2014-02-24 73 views
-3

我已经花了整个昨天试图解决这个问题,没有运气。这是我正在使用的代码。将plist文件中的数据存储到数组中

NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"]; 

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 

NSArray *array = [NSArray arrayWithArray:[dict objectForKey:@"root"]]; 

for(int num = 0; num < 5; num++) 
{ 
NSLog(@"my array:%@", array); 
} 

NSLog(@"items in my array: %lu", (unsigned long) [array count]); 

下面是与im合作的plist文件的意见。

<plist version="1.0"> 
<dict> 
<key>New item</key> 
<string>hello</string> 
<key>New item - 2</key> 
<string>world</string> 
<key>New item - 3</key> 
<string>again</string> 
<key>New item - 4</key> 
<string>and</string> 
<key>New item - 5</key> 
<string>again</string> 
</dict> 
</plist> 

此代码不会返回null就像当我使用一个NSArray在NSDictionary的尝试,但是当我运行控制台不会打印出从plist中检索到的任何数据。它只是打印出来:

my array:{} 
my array:{} 
my array:{} 
my array:{} 
my array:{} 
items in my array: 0 

如果我尝试通过更改NSLog NSLog(@“我的数组:%@”,数组)打印字典;我明白了。

my array:(NULL) 
my array:(NULL) 
my array:(NULL) 
my array:(NULL) 
my array:(NULL) 
items in my array: 0 
+1

您给出的plist文件的描述没有一个名为“root”的密钥,也不包含任何数组。 –

+0

你可以显示打印'dict'的输出吗? –

+0

我添加了一个NSLog打印列表计数,看看我的数组中有多少值添加到它的字典项目和出和输出为0.所以我相信我的问题是,我没有任何对象我的阵列。我的plist是一本字典,里面实际上有5个条目,但是对于这个问题,我只是输入了一个条目。我将在原始问题和新输出中编辑新代码。 –

回答

0

我发现了这个问题。我必须创建一个构建阶段并将plist文件添加到它。这样当我使用pathToResource ofFile时,它有一个文件来查找我何时使用代码的其余部分。

0

你试图把所有的值形式的字典放入数组? 如果是这样,请添加:

NSArray *array = [NSArray arrayWithArray:[dict allValues]]; 

//检查文件;

NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:path]) 
    NSLog(@"NO FILE AT PATH: %@", path); 
+0

我添加了这个,并且还添加了一个NSLog,打印出[字典计数]来查看有多少plist对象实际存储到我的字典中,并且它打印0,然后我做了我的数组的count方法,它也有0个对象在里面。有什么想法吗? –

+0

字典中没有任何内容,因此数组中不会有任何内容。 – CW0007007

+0

我的代码有问题吗?我认为我的代码会将我的plist内容存储在我的字典中。 –

0

一切你可以打印这样的plist是 的NSLog(字典[@ “新项目”]);

而且你应该使用

for(int num = 0; num < array.count; num++) 
{ 
    NSLog(@"my array:%@", array[i]); 
} 

代替

for(int num = 0; num < 5; num++) 
{ 
    NSLog(@"my array:%@", array); 
} 
0

不知道是什么键是在字典?在这种情况下无需担心密钥。试试这个

NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"]; 
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 
if(dict.count != 0) 
    { 
    NSArray *array = [dict allKeys]; 
    for(int num = 0; num < array.count; num++) 
     { 
     NSLog(@"my array item:%@", [dict objectForKey:array[num]]); 
     } 
    } 
else 
    { 
    NSLog(@"Your dictionary is empty."); 
    }