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
}