我目前正在使用Xcode 5中的Objective-C项目。
我有一个文件Data.plist
,一个NSDictionaries
数组,其格式如下:
<?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>
<dict>
<key>
Name
</key>
<string>
Robert Aderholt
</string>
<key>
Party
</key>
<string>
Republican
</string>
</dict>
........
</array>
</plist>
我正在使用以下行加载到一个数组中:
NSArray *arrayOfCongressMen =[NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource: @"Data" ofType: @"plist"]];
我可以通过以下方式成功使用NSLog
:
NSLog(@"Full array: %@",arrayOfCongressMen); //print successfully
NSLog(@"First dictionary of array: %@", arrayOfCongressMen[0]); //prints successfully
最后:
NSLog(@"Object for key Name in the first dictionary of the array: %@", [arrayOfCongressMen[0] objectForKey:@"Name"]);
最后NSLog
打印出(null)
到控制台。
请帮忙!
编辑:已解决
我的plist
文件格式化创建了换行符和间距,因此我的词典键包含&#34; \ n&#34; s和&#34; &#34; S
我通过Ctrl-F修复它并用空字符串替换所有空格。
答案 0 :(得分:0)
正如您应该经常进行调试一样,将其分解。在调用arrayWithContentsOfFile之后,你会得到一个数组吗?
如果你从数组中获取第一个对象,它是什么?
id firstObject = arrayOfCongressMen[0];
NSLog(@"first object class = %@", [firstObject class]);