NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"league" ofType:@"plist"];
contentDict = [NSDictionary dictionaryWithContentsOfFile:plistPath];
Этот ответ правильный - вы уверены, что ваш файл находится в приложении? Вы добавили его в свой проект и проверили, копируется ли он в ваш пакет приложений? Если нет, то, возможно, файл не был добавлен к цели, которую вы строите, что легко сделать, особенно если у вас несколько целей.
Кендалл прав.
По моему опыту, вам нужно добавить свой файл в папку «Ресурсы» в xcode.
Для полноты картины Кендалл и Бентфорд совершенно правы. Однако в моем примере contentArray был свойством, и к концу метода он выходил из области видимости, потому что arrayWithContentsOfFile создает автоматически высвобождаемый объект.
Чтобы сделать это правильно, мне нужно было сделать 3 вещи:
поместите файл в папку ресурсов.
правильно назовите файл (был league.plist вместо league.plist)
прочитайте файл, используя [[NSArray alloc] initWithContentsOfFile: plistPath) ];
третья часть создает выделенный NSArray, который не освобождается при выходе из области действия этой функции ... конечно, это необходимо было освободить в функции dealloc.
Просто добавлю. У меня была та же проблема, и предложенное решение помогло мне решить проблему, однако я не уверен, действительно ли я использовал точное решение. В моем случае проблема заключалась в том, что файл .plist был добавлен в другую цель (за секунду до этого была добавлена новая цель). Поэтому решением было .plist> Get Info> Targets, и убедитесь, что он добавлен в правильную цель, чтобы он был скопирован на устройство при установке. Черт возьми, если бы я понял это достаточно быстро, я бы сэкономил много времени. Надеюсь, это тоже поможет. С уважением!