Загрузка массива из .Plist

Я пытаюсь загрузить свой массив из массива в моем .Plist, но он не работает.

Плист выглядит так:

введите здесь описание изображения

Это код, который я использую:

NSString *path = [[NSBundle mainBundle]pathForResource:@"DiseasePropertyList" ofType:@"plist"];
NSMutableArray *rootLevel = [[NSMutableArray alloc]initWithContentsOfFile:path];
self.myArray = rootLevel;
[rootLevel release];

person Jon    schedule 08.08.2011    source источник
comment
Ты выглядишь опасно с этим списком!   -  person Moshe    schedule 08.08.2011


Ответы (5)


Попробуй это. Пожалуйста, измените имя файла. Это работает нормально.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *recentFilePath = [documentsDirectory stringByAppendingPathComponent:@"recent.plist"];
NSArray *history = [NSArray arrayWithContentsOfFile:recentFilePath];
person ChangUZ    schedule 08.08.2011
comment
Другой способ: ` NSURL* url = [[NSBundle mainBundle] URLForResource: @DiseasePropertyList withExtension: @plist]; NSArray* myArray = [массив NSArrayWithContentsOfURL: url];` - person Daniel T.; 07.03.2014

Ваш список на самом деле является словарем. Массив является объектом этого словаря для ключа «Массив». Вы можете превратить plist в массив в Xcode 4, выбрав «Array» и вырезав (CMD-x), а затем вставив в пустой plist (CMD v).

person Andrew Toth    schedule 08.08.2011
comment
Я бы сказал, что это, скорее всего, проблема. Вы также можете просмотреть plist как источник и просто удалить теги <dict> и </dict> из файла (я делаю это постоянно). - person theMikeSwan; 08.08.2011
comment
Также удалите тег ‹key› .. ‹/key› после начального тега ‹dict›.. это определенно решит мою проблему.... - person DShah; 08.08.2011

NSString *pathStr = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [settingsBundlePath stringByAppendingPathComponent:@"yourproject.plist"]; 
NSDictionary *settingsDict = [NSDictionary dictionaryWithContentsOfFile:finalPath];

и просто проверьте описание settingsDict. Надеюсь, это поможет вам.

person Michael Bai    schedule 08.08.2011

Если ваш файл plist находится в комплекте вашего приложения, проще всего это сделать:

NSArray *myArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"filename_without_extension" ofType:@"plist"]];
person Erwan    schedule 02.04.2014

Используйте этот метод, он работал нормально для меня.

NSArray *country= [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"CountryList" ofType:@"plist"]];
person manishsharma93    schedule 07.09.2015