Каталог документов в iPod Touch и iPhone
-
12-09-2019 - |
Вопрос
Я разрабатываю приложение, которое считывает данные на iPod touch / iPhone, которые отправляются на него через многоадресные сокеты с UDP, и мне нужно сохранить их в виде файла в каталоге документов.Существует ли это на iPhone или iPod Touch?Я знаю, что есть NSFileHandle и NSFileManager, которые я планирую использовать для чтения и записи в файл, но я не уверен, где находится раздел "Мои документы" iPod touch, если вы понимаете, о чем я говорю.Я еще не настолько хорошо знаком с каталогом файлов iPod / iPhone, поэтому буду признателен за любую помощь!Существует ли какой-то "общий" каталог, который все разработчики используют для хранения своих файлов, если они задействованы в их приложении?
Решение
Вы должны использовать каталог Documents вашего приложения для хранения постоянных файлов.Вы можете получить путь к каталогу с помощью этой функции, которую Apple включает в свой шаблон для приложения, использующего Core Data:
/**
Returns the path to the application's documents directory.
*/
- (NSString *)applicationDocumentsDirectory {
NSArray *paths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
Другие советы
Совсем недавно шаблон для приложения Core Data предоставил код, подобный этому:
- (NSString *)applicationDocumentsDirectory {
return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}
Если возвращаемый NSArray из NSSearchPathForDirectoriesInDomains пуст, lastObject возвращает nil, так что в результате код получается короче и чище.
Одна вещь, о которой вы должны знать - начиная с iOS 5, вы не должны помещать данные, не созданные пользователем, в Documents directory.Ваше приложение может быть отклонено.Вместо этого вам следует подумать о том, чтобы помещать такие журналы в Caches
справочник.Чтобы получить этот путь, вам нужно заменить NSDocumentDirectory
с NSCachesDirectory
в приведенном выше примере кода.