получить доступ к данным plist - PullRequest
6 голосов
/ 16 августа 2010

У меня есть список, который выглядит так:

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

Я загрузил список, используя это:

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

как я могу получить доступ к каждомуэлемент моего plist?Я хочу найти соответствующий ключ в списке, а затем искать с его дочерним элементом.Как я могу это сделать?Любое предложение?

Спасибо заранее!

Ответы [ 3 ]

9 голосов
/ 16 августа 2010

Массивы индексируются.Если вы хотите получить доступ к первому объекту в 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"];

Теперь вы можете делать со своим массивом все, что захотите.

2 голосов
/ 06 февраля 2011

Здесь - это ссылка на обсуждение, которое предоставило очень хороший пример того, как получить доступ к вашим данным и какой тип схем хранения будет более выгодным при определенных обстоятельствах.Решение @Jeff Kelley намечено, я просто думал, что этот вопрос добавит дополнительный ресурс.Надеюсь, это поможет!

1 голос
/ 14 августа 2013

Вот как вам нужно создать plist

plist screenshot

Установить корень в массив вместо словаря, это даст вам результаты в последовательности.С помощью строк кода ниже вы можете получить полный список.

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.!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...