2010-07-23 4 views
14

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

Я кодирую несколько сложных объектов с помощью NSKeyedArchiver и сохраняю их на диск. Скажем, что-то вроде -

Class member { 
    int *id; 
    NSString *name; 
    NSMutableArray *array; 
    TempClass *object; 
} 

Функциональность Я пытаюсь создать для пользователя, чтобы иметь возможность сохранить свою работу, позволяет сказать, при создании нового члена и вернуться к нему позже. Когда пользователь закончит работу, он щелкнет сообщение, и данные будут переданы в веб-службу. Если нет, он просто нажимает на сохранение и покидает экран, и данные сохраняются, так что приложение может возобновиться с этой точки, когда пользователь вернется. Теперь, как только я разместил данные в веб-службе, я больше не хочу хранить данные на диске, и я не могу найти способ его удалить.

Теперь мои классы кодирования и декодирования функционируют нормально. Я могу использовать NSKeyedArchiver для сохранения данных на диск и их получения с помощью NSKeyedUnarchiver. Но, на мой вопрос, как я могу удалить те данные, которые мне больше не нужны? Нужно ли вручную удалять файл на диске? Есть ли способ заставить NSKeyedUnarchiver удалить данные, которые он возвращает?

Thanks,
Teja.

ответ

18

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

- (BOOL) deleteFile:(NSString *) pathOfFileToDelete error:(NSError *)err { 
    BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: pathOfFileToDelete]; 
    if(exists) { 
     [[NSFileManager defaultManager]removeItemAtPath: pathOfFileToDelete error:err]; 
    } 
    return exists; 
} 
+1

Спасибо. Но, как получить имя файла? Если я архивирую несколько объектов, они будут сохранены в виде нескольких файлов? –

+0

Хорошо, понял, что это был глупый вопрос. Я не переписываю свой код сохранения для записи в другой файл для каждого создаваемого архива. Затем я могу удалить их, когда захочу. –

2

Для Swift 2.0:

do { 
    try NSFileManager.defaultManager().removeItemAtPath("Your_PATH") 
} catch { 

} 
5

Для Swift 2.0:

func deleteFile(path: String) -> Bool{ 
    let exists = NSFileManager.defaultManager().fileExistsAtPath(path) 
    if exists { 
     do { 
      try NSFileManager.defaultManager().removeItemAtPath(path) 
     }catch let error as NSError { 
      print("error: \(error.localizedDescription)") 
      return false 
     } 
    } 
    return exists 
} 
2

A Swift3 пример:

do { 
try FileManager.default.removeItem(atPath: path) 
} catch { 
// catch potential error 
} 
Смежные вопросы