iphonenskeyedarchiver

NSKeyedUnarchiver - delete decoded data?


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?


Solution

  • 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;
    }