Можно ли скопировать другой лист в код пакета приложения? - PullRequest
0 голосов
/ 16 июля 2009

Мой вопрос указан выше в заголовке, но я напишу его снова здесь

Можно ли скопировать другой лист в код пакета приложения?

Это на самом деле немного связано с моим предыдущим вопросом;) Создать список свойств словаря программно

Но так как я могу выписать plist (и проверить, делаю ли я что-то не так), мне было интересно, смогу ли я скопировать записанный файл

[testBook writeTofile:@/Users/jack/testbook2.plist" atomically:NO];

к моему пакету приложений в коде (чтобы он мог читать отсюда с помощью NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *dataPath = [path stringbyAppendingPathcomponent:@"testbook2.plist"];

Другая альтернатива также хороша, например, если я могу читать мой plist напрямую из другого пути вместо mainBundle

Ответы [ 2 ]

2 голосов
/ 16 июля 2009

Физически, да, иногда это возможно.

НЕТ, НЕ ДЕЛАЙТЕ ЭТОГО !!

Ладно ... копирование содержимого в ваш комплект приложений - это плохо, ваш комплект приложений не там, где вы храните настройки или данные. Вы должны думать о своем приложении как только для чтения. Вы должны сделать это по нескольким причинам:

  1. Хотя в большинстве случаев пользователь в системе Mac OS X имеет разрешение на запись в приложение, иногда этого не происходит. Подумайте о детях, которые не используют учетные записи администратора или лабораторные занятия в школах.
  2. Это приведет к аннулированию подписи кода. Если вы подпишете свое приложение, это изменит сигнатуру и нарушит кодовый знак, вызывая всевозможные странные проблемы (потеря любых разрешений брандмауэра, которые есть у приложения, сообщение пользователю о том, что приложение изменилось и запрос у него разрешения на связку ключей, и т. Д.). В будущем это может также привести к появлению всевозможных предупреждений, поскольку подделка приложения является большим красным сигналом безопасности.
  3. Это не будет работать на iPhone. Это может не быть проблемой, но если вы все намерены использовать этот код на iPhone, пакеты приложений помещаются в «песочницу» только для чтения

Правильное место для размещения такого рода вещей находится в подпапке папки поддержки приложений

2 голосов
/ 16 июля 2009

Я не знаю точно, что вы делаете, но в зависимости от вашего приложения вы можете использовать каталог поддержки приложений:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
if ([paths count] > 0) {
    NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"App Name"];
    // Create the directory if it doesn't exist, etc.
} else {
    NSLog(@"Fail!");
    // ...
}
...