首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问plist数据

访问plist数据
EN

Stack Overflow用户
提问于 2010-08-16 22:23:55
回答 3查看 7.4K关注 0票数 6

我有一个plist,是这样的:

代码语言:javascript
复制
 <dict>  
   <key>11231654</key>
  <array>
      <string>hello</string>
      <string>goodbye</string>
  </array>
  <key>78978976</key>
  <array>
        <string>ok</string>
    <string>cancel</string>
   </array>

我使用下面的代码加载plist:

代码语言:javascript
复制
    NSString *path = [[NSBundle mainBundle] pathForResource:
                    @"data" ofType:@"plist"];
    // Build the array from the plist  
    NSMutableArray *array3 = [[NSMutableArray alloc] initWithContentsOfFile:path];  

如何访问plist中的每个元素?我想在plist中搜索一个匹配的键,然后用它的子键进行搜索。我该怎么做呢?有什么建议吗?

预想一下!

EN

回答 3

Stack Overflow用户

发布于 2010-08-16 22:26:38

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

代码语言:javascript
复制
id someObject = [array objectAtIndex:0];

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

代码语言:javascript
复制
NSString *myString = [array objectAtIndex:0];

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

代码语言:javascript
复制
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"];

现在您可以对数组做任何您想做的事情。

票数 9
EN

Stack Overflow用户

发布于 2011-02-07 00:32:14

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

票数 2
EN

Stack Overflow用户

发布于 2013-08-14 16:04:14

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

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

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

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

代码语言:javascript
复制
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中获取整数、字符串和布尔值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3494033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档