iPhone pathForResource vs bundlePath - PullRequest
       11

iPhone pathForResource vs bundlePath

1 голос
/ 24 июня 2010

Я хочу использовать pathForResource, но не похоже, что он создаст путь, если он не существует. Поэтому я пытаюсь создать его вручную, выполнив следующие действия:

 NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] bundlePath],@"myFileName"];

Я создаю файлы динамически, поэтому мне нужно получить к ним доступ после того, как у меня будет Build and Run приложение. Но он помещает проект в уникальную папку с идентификатором, поэтому путь выглядит примерно так:

/Users/RyanJM/Library/Application Support/iPhone Simulator/3.0/Applications/80986747-37FD-49F3-9BA8-41A42AF7A4CB/MyApp.app/myFileName.plist

Но этот уникальный идентификатор меняется каждый раз, когда я делаю сборку. Как правильно создать путь, по которому я могу добраться каждый раз (даже в симуляторе)?

Спасибо.

Обновление: отредактировал вопрос, надеясь помочь любому, кто столкнется с ним в будущем.

Обновление: IWasRobbed правильно ответил, чтобы получить URL-адрес для создания пути. Но лучший ответ, который я смог найти, это Брэд Паркс . Хотелось бы, чтобы был более чистый путь.

1 Ответ

1 голос
/ 24 июня 2010

С учетом того, как вы сформулировали свой вопрос, вы читаете список, который был включен в пакет перед сборкой:

NSString *propertyListPath = [[NSBundle mainBundle] pathForResource:SomeString ofType:@"plist"];

Если вы хотите получить доступ к каталогам, которые каждое приложение имеет в качестве уникальной области хранения для файла, который вы создаете ПОСЛЕ сборки, используйте это:

#define kFilename   @”data.plist”

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

return [documentsDirectory stringByAppendingPathComponent:kFilename];
}

Затем вы можете проверить это и выполнить некоторую обработку данных здесь:

NSString *filePath = [self dataFilePath]; 

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
// do something with data here
}

Вы бы избавили себя от многих проблем, если бы купили / прочитали Beginning iPhone 3 Development, в частности главу 11, где он рассматривает постоянство данных (отсюда и этот пример). Это отличная книга.

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