Ошибка загрузки plist в NSArray на ViewDidLoad - PullRequest
1 голос
/ 27 августа 2011

Я пытаюсь загрузить простой файл plist в XCode 4 для приложения для iPad.Цель состоит в том, чтобы он был загружен в часть таблицы разделенного представления.

Структура и структура моего проекта выглядят следующим образом:

enter image description here

I тогдаобъявить массив в интерфейсе RootViewController:

#import <UIKit/UIKit.h>

@class DetailViewController;

@interface RootViewController : UITableViewController {
    NSArray *sites;
}

@property (nonatomic, retain) IBOutlet DetailViewController *detailViewController;

@end

Затем я пытаюсь загрузить в plist в viewDidLoad:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.clearsSelectionOnViewWillAppear = NO;
    self.contentSizeForViewInPopover = CGSizeMake(320.0, 600.0);

    NSBundle *bundle = [NSBundle mainBundle];
    //NSLog(bundle);
    NSString *path = [bundle pathForResource:@"StoredSites" ofType:@"plist"];
    NSLog(path);

    sites = [[NSArray alloc] initWithContentsOfFile:path];
    NSLog(@"%d", [sites count]);

}

Сначала операторы NSLog возвращают то, что выглядитдопустимый путь, но при попытке загрузить NSArray с содержимым файла, он возвращается со счетом 0:

enter image description here

Я проверил на этапах сборки, чтобы увидетьесли ссылка на файл появляется и кажется, что все в порядке:

enter image description here

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

Я ценю помощь -

Ответы [ 2 ]

1 голос
/ 27 августа 2011

Проблема заключалась в том, что XML-лист plist был заключен в словарь, а не в простой массив массивов -

DShah покрывает это здесь: plist в проблеме создания xcode

1 голос
/ 27 августа 2011

Возможно, вы захотите использовать NSDictionary, так как это пример кода, приведенного здесь для метода pathForResource:ofType:.

Я не совсем уверен, почему он не работает с NSArray, но, возможно, plist отформатирован не совсем правильно? В документации для NSArray сказано, что initWithContentsOfFile: принимает в качестве параметра кавычку:

Путь к файлу, содержащему строковое представление массива производится writeToFile: атомарно: метод.

Опять же, я не совсем уверен. Надеюсь, что поможет!

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