无法从plist中读取数据
我无法从我的plist文件中读取数据。提取字符串中的值的正确方法是什么?并且让我说我有2个项目,我怎么得到两个?下面将是plist上的图像。 无法从plist中读取数据
下面是plist的源代码。我读的地方,有可能是一个差异在Xcode 3和Xcode的4
<?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>Array</key>
<array>
<string>value 1</string>
<string>value 2</string>
</array>
</dict>
</plist>
仍旧回答这个问题。但是我设法找到了一个能够为我工作的代码。代码如下。感谢peylow的努力。
NSString *path = [[NSBundle mainBundle] pathForResource:@"EventAddress" ofType:@"plist"];
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
NSArray* allmyKeys = [myDictionary allValues];
NSLog(@"%@", allmyKeys);
NSLog(@"%@", [[allmyKeys objectAtIndex:0] objectAtIndex:0]);
最后2的NSLog来看看我的plist中返回值的数组,并找出其中只有1的值。并且非常感谢调试器,在看了近3天后,我也意识到了我的问题。这个该死的阵列并不是正常的一维,它的二维。这就是为什么我使用了两次objectAtIndex。
首先,你需要让你的应用程序包的plist文件资源的路径:
NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"filename"
ofType:@"plist"];
鉴于此路径您可以将plist文件加载到内存中。这是非常简单,因为plist文件的根节点是数组:
NSArray* plist = [NSArray arrayWithContentsOfFile:plistPath];
更经常在你的plist根节点是一个字典,字典具有用于装载的Plist等效简便方法。如果根节点是未知的,那么你应该起诉NSPropertyListSerialization
类,多一点工作,但更灵活。
在plist中的存储器中的内容将永远是属性值类的实例,就像使用他们与他们的任何实例:
NSData
NSString
NSArray
NSDictionary
NSDate
NSNumber
好的,谢谢你的回复。所以如果我想要值“值1”,我需要做'NSString * v1 = [plist objectAtIndex:0];'?? –
@Melvin Lai - 是的。 – PeyloW
好吧,现在试一试 –
非常感谢发布此!我在这件事上突然想到了。我确信这与在xcode 4.0中创建的plist文件有关。 – ArdenDev
但是我听说某个地方这种方法可能有效,但它不是这样做的理想方式。不要停止寻找正确的答案或方法来做到这一点。但我很高兴这种方法帮助你:) –