Как вы делаете дисплей Plist Array с iPhone? - PullRequest
0 голосов
/ 20 сентября 2011

Я искал примерный код дисплея Plist и не могу найти ни одного, который бы делал то, что я хочу.Я знаю, что это не может быть слишком сложно, но я новичок в Plists.

У меня есть следующий массив в Plist, и я не могу получить правильную команду для отображения информации.Я что-то не так делаю в настройках Plist?Он компилируется нормально, но данные не поступают в iPhone Simulator.

Каков нормальный способ отображения информации?

У меня установлено условие:

Если условие одно
затем отобразите «+ 0 + 1»
else
отобразите «+ 0 + 2»


* Я надеюсь, что это будет отображаться:
* "thisодин "
*" это два "
*" это три "
* еще дисплей
*" 555-555-1234 "
*" 555-555-0000 "
* "555-555-5555"


  • МОЙ ПЕРЕЧЕНЬ КАК СЛЕДУЮЩИЙ
    *
    • Значение типа ключа * Корневой словарь ((2 элемента)
  • * + 0 + 1 массив (3 элемента)
  • * Элемент 0 Строка "this is one"
  • * Элемент 1 String«это два»
  • * Элемент 2 Строка «это три»
  • * + 0 + 2 Массив (3 элемента)
  • * Элемент 0 Строка 555-555-1234 "
  • * Элемент 1 Строка" 555-555-0000 "
  • * Элемент 2 Строка" 555-555-5555 "*

// read property list into memory as an NSData object<br> NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];<br> NSString *errorDesc = nil;<br> NSPropertyListFormat format;<br> // convert static property list into dictionary object<br> NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];

// assign values<br> self.item1 = [temp objectForKey:@"name1"];<br> self.item2 = [NSMutableArray arrayWithArray:[temp objectForKey:@"name2"]];<br> // display values<br> bigCheese.text = disp1;<br> numberZero.text = [disp2 objectAtIndex:0];<br> numberOne.text = [disp2 objectAtIndex:1];<br> numberTwo.text = [disp2 objectAtIndex:2];

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Как только вы получите словарь, получите все значения для этого словаря. В вашем случае получите все значения из временного словаря. Он должен вернуть вам массив, содержащий два массива.

NSArray * valueArray = [temp allValues];

Теперь у вас есть два массива, и если вы хотите получить доступ к "555-555-5555", сделайте так:

[[valuesArray objectAtIndex: 1] objectAtIndex: 2];

Или, если вы уверены, что «name1» и «name2» являются ключами вашего словаря, вы можете получить к нему доступ следующим образом:

[[temp objectForKey: @ "name1"] objectAtIndex: 2];

Как только вы получите эту информацию, вам решать, как вы хотите ее отобразить. Я предлагаю вам отладить и посмотреть, правильно ли сначала создаются объекты словаря и массива. Не уверен, что это за disp1 и disp2 в приведенном вами примере кода.

0 голосов
/ 20 сентября 2011

Попробуйте использовать:

NSString *file = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:file]; 
NSArray *array = [dict objectForKey:@"Array"]; NSLog(@"%@", array);

Это просто, поэтому меньше шансов сделать что-то не так.

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