NSKeyedUnarchiver - удалить декодированные данные?
Я не мог получить ответы на мой предыдущий (связанный) вопрос, поэтому мне интересно, может ли он слегка перефразировать его, будет любая помощь.
Я кодирую несколько сложных объектов с помощью NSKeyedArchiver и сохраняю их на диск. Скажем, что-то вроде -
Class member {
int *id;
NSString *name;
NSMutableArray *array;
TempClass *object;
}
Функциональность, которую я пытаюсь создать, заключается в том, чтобы пользователь мог сохранить свою работу, скажем, при создании нового участника и вернуться к нему позже. Когда пользователь закончит работу, он щелкнет сообщение, и данные будут переданы в веб-службу. Если нет, он просто нажимает на сохранение и покидает экран, и данные сохраняются, так что приложение может возобновиться с этой точки, когда пользователь вернется. Теперь, как только я разместил данные в веб-службе, я больше не хочу хранить данные на диске, и я не могу найти способ его удалить.
Теперь мои классы кодирования и декодирования работают нормально. Я могу использовать NSKeyedArchiver для сохранения данных на диск и их получения с помощью NSKeyedUnarchiver. Но, на мой вопрос, как я могу удалить те данные, которые мне больше не нужны? Нужно ли вручную удалять файл на диске? Есть ли способ заставить NSKeyedUnarchiver удалить возвращаемые данные?
Спасибо,
Тея.
Ответы
Ответ 1
Очень простой способ просто удалить его программно, как только вы разместили данные:
- (BOOL) deleteFile:(NSString *) pathOfFileToDelete error:(NSError *)err {
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: pathOfFileToDelete];
if(exists) {
[[NSFileManager defaultManager]removeItemAtPath: pathOfFileToDelete error:err];
}
return exists;
}
Ответ 2
Для 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
}
Ответ 3
Для Swift 2.0:
do {
try NSFileManager.defaultManager().removeItemAtPath("Your_PATH")
} catch {
}
Ответ 4
Пример Swift3:
do {
try FileManager.default.removeItem(atPath: path)
} catch {
// catch potential error
}