iOS хранит файлы, если нет интернета, затем отправляет при наличии интернета

#iphone #objective-c #ios

#iPhone #objective-c #iOS

Вопрос:

Мне нужно отправить данные на сервер. Если подключение к Интернету отсутствует, я хочу просто сохранить эти текстовые данные в «файл» в файловой системе iOS.

Периодически мы будем проверять подключение к Интернету, если оно у нас есть, нам нужно проверить, есть ли какие-либо файлы в файловой системе и сколько, затем мне нужно извлечь данные из файла и отправить их на сервер в обычном режиме. Затем удалите файл.

Итак, что я не знаю, как сделать:

1) Сохраните текст в файл в файловой системе локального устройства

2) Проверьте эту файловую систему, если есть какие-либо файлы

3) Перебирайте файлы и извлекайте данные из каждого

4) Удалите файл после того, как данные попадут на сервер

Спасибо

Ответ №1:

Единственное место, где вы можете сохранить файл, — это каталог документов приложения. Для каждого приложения есть отдельный.

1) Вы сохраняете файлы с помощью NSFileManager .
2) Вы также используете NSFileManager для проверки наличия файлов в каталоге documents,
3) включая итерацию
4) и удаление.

Вы получаете каталог документов следующим образом:

 - (NSURL *)applicationDocumentsDirectory {
    return [[[NSFileManager defaultManager] 
      URLsForDirectory:NSDocumentDirectory 
      inDomains:NSUserDomainMask] lastObject];
}
  

Вы сохраняете файл, подобный этому:

 NSData *file = ...;
NSURL *fileURL = [applicationDocumentsDirectory 
   URLByAppendingPathComponent:@"filename"];
[file writeToURL:fileURL atomically:YES];
  

Вы получаете массив содержимого каталога для итерации следующим образом:

 NSArray *files = [[NSFileManager defaultManager] 
   contentsOfDirectoryAtPath:path error:NULL];
for (id file in files) { 
   /* do what you have to do */ 
}
  

Удалить файл:

 [[NSFileManager defaultManager] removeItemAtURL:fileURL];
  

Комментарии:

1. Мунди просто хотел выразить дополнительную благодарность! Я знаю, что люди проголосовали за меня здесь, но у меня крайний срок, и это отличная помощь. Я мог бы часами рыться в Интернете и документации и отстать.

Ответ №2:

  1. Многие базовые классы, такие как NSString, NSData и NSDictionary, имеют методы, которые могут записывать их содержимое непосредственно в файл. (Существуют аналогичные методы чтения.) Существует также тонна документации, предоставляемой вместе с iOS SDK. Начните с руководства по программированию файловой системы.

2-4. Взгляните на NSFileManager, который позволяет вам делать все это и многое другое.