Plist Array для NSArray нет объектов - PullRequest
1 голос
/ 08 ноября 2011

Итак, я искал, читал и успешно делал это раньше, но у меня возникла проблема с этим.

У меня есть plist, который представляет собой массив строк.Я не получаю объекты читаются в массив.Я успешно делаю это для словаря в другом контроллере.Так вот мой код.

    // Open plist and get brands
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"brands" ofType:@"plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:plistPath]) {
    NSLog(@"The file exists");
} else {
    NSLog(@"The file does not exist");
}

_brands = [NSArray arrayWithContentsOfFile:plistPath];

_catList = [[[NSMutableArray alloc] initWithCapacity:[_brands count]] autorelease];

и вот мой список.Обратите внимание, что массив _brands определяется как NSArray * бренды, свойство устанавливается как неатомарное, доступно только для чтения и синтезируется как brand = _brands.

<?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>Root</key>
    <array>
        <string>Brand A</string>
        <string>Brand B</string>
        <string>Brand C</string>
        <string>Brand D</string>
    </array>
</dict>
</plist>

Я вижу, что есть тег, но в Xcode он отображается какмассив со строками.Не словарь> массив> много строк

Ответы [ 2 ]

7 голосов
/ 08 ноября 2011

Списки являются словарями в своей основе (обратите внимание на тег ). Считайте файл в NSDictionary, затем запросите в словаре массив, используя метод objectforKey: и ключ Root.

NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:plistPath];
_brands = [dict objectForKey:@"Root"];
3 голосов
/ 21 ноября 2012
NSString *plistPath = [self copyFileToDocumentDirectory:plistFileName];
NSDictionary *plistContents=[[NSDictionary alloc] initWithContentsOfFile:plistPath];

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