我正在尝试做一些我已经知道该怎么做的事 - 但它没有用。寻找解决这个问题的想法。我认为这与Xcode 4.1创建plist文件的方式有关。
我正在尝试从plist文件中读取字符串,并将它们转储到NSArray中。这是我的代码:
NSString *myFile = [[NSBundle mainBundle]
pathForResource:@"File1"ofType:@"plist"];
myArray = [[NSArray alloc]initWithContentsOfFile: myFile];
我在Xcode中创建了一个plist文件 - 顶层的一个数组和一些字符串。 myArray始终为null。我尝试在文本编辑器中打开plist,因为我在stackoverflow中的其他地方读到Xcode 4在顶层创建了一个带有Dictionary的plist。我手动编辑使其成为顶级的数组 - 没有成功。最后,我回到了顶层的dict并尝试将其读入NSDictionary - 也没有成功。
我在教程之后看过教程并在StackOverflow上阅读了一些类似的问题,但是我无法从plist文件中读取任何东西 - 它绝对存在于捆绑包中。我在Xcode中无数次重新创建了plist。感谢任何建议。
这是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">
<dict>
<key>New item</key>
<array>
<string>Ping</string>
<string>Pang</string>
<string>Pong</string>
</array>
</dict>
</plist>
答案 0 :(得分:0)
如果您只想加载plist,则需要使用属性列表序列化来首先将plist加载为NSData
[[NSData alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"File1"]]
然后使用
将其序列化为dict(或数组,具体取决于您的根项目)NSDictionary *aDict = [NSPropertyListSerialization propertyListWithData: options: format: error:]
在Xcode中查看plist时,顶级元素是制作aDict的类型。
如果您希望将整个plist作为字符串加载,则可能需要使用NSString方法执行某些操作,例如[NSString stringFromData]
。
答案 1 :(得分:0)
.plist的根对象是dict
,因此您需要将其作为NSDictionary
加载到内存中。
myDictionary = [[NSDictionary alloc] initWithContentsOfFile: myFile];