Создать NSArray из Array в Plist - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть структура списка, подобная этой:

<?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>1</key>
<array>
    <string>George Washington</string>
    <string>February 22, 1732 – December 14, 1799</string>
    <string>Westmoreland, Virginia</string>
    <string>April 30, 1789 – March 4, 1797</string>
    <string>Non-partisan</string>
</array>
<key>2</key>
<array>
    <string>John Adams</string>
    <string>October 30, 1735 – July 4, 1826</string>
    <string>Braintree, Massachusetts</string>
    <string>March 4, 1797 – March 4, 1801</string>
    <string>Federalist</string>
</array>
<key>3</key>
<array>
    <string>Thomas Jefferson</string>
    <string>April 13, 1743 – July 4, 1826</string>
    <string>Shadwell, Virginia</string>
    <string>March 4, 1801 – March 4, 1809</string>
    <string>Democratic-Republican</string>
</array>
</dict>
</plist>

И у меня есть этот файл в переменной с именем filePath.

Допустим, я хотел взять массив 1 из списка, как я могу сделать NSArray из этого?

Редактировать: Опять же, я хочу создать массив из определенного массива в списке.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011

Когда вы читаете в словаре, содержащиеся в нем массивы создаются для вас. Вам просто нужно получить к ним доступ, запросив -objectForKey: с помощью соответствующего ключа.

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:filePath];
NSArray *georgeWashingtonInfo = [dictionary objectForKey:@"1"];
NSArray *johnAdamsInfo = [dictionary objectForKey:@"2"];
NSArray *thomasJeffersonInfo = [dictionary objectForKey:@"3"];
2 голосов
/ 08 декабря 2011

Итак, вы хотите прочитать содержимое этого списка в массив. Это легко сделать. Получите файл plist из вашего локального пакета. создать пустой массив. вставить значения в этом.

// Path to the plist (in the application bundle)
NSString *path = [[NSBundle mainBundle] pathForResource:
    @"DrinkArray" ofType:@"plist"];

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path];

// Show the values  
for (id key in dictionary) 
{
    if(key == 1) //gives array1
        NSLog(@"bundle: key=%@, value=%@", key, [dictionary objectForKey:key]);
}
...