访问plist数据

时间:2010-08-16 14:23:55

标签: objective-c iphone xcode plist

我有一个像这样的plist:

 <dict>  
   <key>11231654</key>
  <array>
      <string>hello</string>
      <string>goodbye</string>
  </array>
  <key>78978976</key>
  <array>
        <string>ok</string>
    <string>cancel</string>
   </array>

我使用这个加载了plist:

    NSString *path = [[NSBundle mainBundle] pathForResource:
                    @"data" ofType:@"plist"];
    // Build the array from the plist  
    NSMutableArray *array3 = [[NSMutableArray alloc] initWithContentsOfFile:path];  

我如何访问我的plist的每个元素? 我想在plist中搜索匹配的键,而不是搜索其子项。我怎样才能做到这一点?有什么建议吗?

提前知道了!

3 个答案:

答案 0 :(得分:9)

数组被编入索引。如果您想访问NSArray中的第一个对象,请执行以下操作:

id someObject = [array objectAtIndex:0];

如果你知道对象类型,你可以这样做:

NSString *myString = [array objectAtIndex:0];

编辑:您需要使用NSDictionary来获取您拥有的数据 - 请注意,它以<dict>标记开头,而不是<array>标记(尽管有数组作为值)。

NSString *path = [[NSBundle mainBundle] pathForResource:
                @"data" ofType:@"plist"];
// Build the array from the plist  
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

NSArray *value = [dict valueForKey:@"11231654"];

现在你可以用你的数组做任何你想做的事。

答案 1 :(得分:2)

Here是一个讨论的链接,它提供了一个很好的示例,说明如何访问您的数据以及哪种类型的存储方案在某些情况下会更有益。 @Jeff Kelley的解决方案是目标,我只是认为这个问题会增加额外的资源。希望这有帮助!

答案 2 :(得分:1)

这就是你需要创建plist的方法

plist screenshot

将root设置为数组而不是字典,这将按顺序为您提供结果。 使用以下代码行,您可以获取完整的plist。

NSString *pathOfPlist = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
arrPlistValue = [[NSArray alloc]initWithContentsOfFile:path];
NSLog(@"Plist Value : %@",arrPlistValue);

之后,您可以使用以下代码获取任何特定内容:

NSString *strName = [[arrTempValue objectAtIndex:0] objectForKey:@"name"];
NSString *strImage = [[arrTempValue objectAtIndex:0] objectForKey:@"image"];
int idValue = [[[arrTempValue objectAtIndex:0] objectForKey:@"id"] integerValue];
BOOL isSubCat = [[[arrTempValue objectAtIndex:0] objectForKey:@"isSubCategory"] boolValue];

使用此代码,您可以从plist中获取整数,字符串,布尔值。!