Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSKeyedUnarchiver - delete decoded data?

I couldn't get any replies on my previous (related) question, so I'm wondering if slightly paraphrasing it will be of any help.

I'm encoding a few complex objects with NSKeyedArchiver and saving it to disk. Say, something like -

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

The functionality I'm trying to build is for the user to be able to save his work, lets say, while creating a new member and come back to it later. When the user finishes up, he clicks post and the data will be transmitted to a web service. If not, he just clicks save and leaves the screen and the data is persisted, so that the app can resume from that point when the user comes back. Now, once I've posted the data to the web service, I do not want to keep the data in the disk anymore and I can't really find a way to delete it.

Now, my encoding and decoding classes are functioning fine. I can use NSKeyedArchiver to save the data to disk and retrieve it using NSKeyedUnarchiver. But, my question is, how can I delete the data that I don't need anymore? Do I have to manually delete the file on the disk? Is there any way to get NSKeyedUnarchiver to delete the data that's it's returning?

Thanks,
Teja.

like image 425
Tejaswi Yerukalapudi Avatar asked Jul 23 '10 18:07

Tejaswi Yerukalapudi


2 Answers

A very simple way to just delete it programmatically once you have posted the data:

- (BOOL) deleteFile:(NSString *) pathOfFileToDelete error:(NSError *)err {
    BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: pathOfFileToDelete];
    if(exists) { 
        [[NSFileManager defaultManager]removeItemAtPath: pathOfFileToDelete error:err];
    }
    return exists;
}
like image 59
Frank C. Avatar answered Nov 02 '22 21:11

Frank C.


A Swift3 example:

do {
 try FileManager.default.removeItem(atPath: path)
} catch {
 // catch potential error
}
like image 23
mrc5 Avatar answered Nov 02 '22 20:11

mrc5