NSKeyedUnarchiver - 删除解码数据?

Tej*_*udi 16 iphone nskeyedarchiver

我无法对我之前的(相关)问题做出任何回复,所以我想知道是否稍微解释它会有什么帮助.

我正在使用NSKeyedArchiver对一些复杂对象进行编码并将其保存到磁盘.说,像 -

Class member {
    int *id;
    NSString *name;
    NSMutableArray *array;
    TempClass *object;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建的功能是让用户能够保存他的工作,比如说,创建一个新成员并稍后再回来.当用户完成后,他点击发布,数据将被传输到Web服务.如果没有,他只需单击保存并离开屏幕并保持数据,以便应用程序可以在用户返回时从该点恢复.现在,一旦我将数据发布到Web服务,我不想再将数据保存在磁盘中了,我真的找不到删除它的方法.

现在,我的编码和解码类运行正常.我可以使用NSKeyedArchiver将数据保存到磁盘并使用NSKeyedUnarchiver检索它.但是,我的问题是,如何删除我不再需要的数据?我是否必须手动删除磁盘上的文件?有没有办法让NSKeyedUnarchiver删除它返回的数据?

谢谢,
Teja.

Fra*_* C. 21

发布数据后,以编程方式删除它的一种非常简单的方法:

- (BOOL) deleteFile:(NSString *) pathOfFileToDelete error:(NSError *)err {
    BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath: pathOfFileToDelete];
    if(exists) { 
        [[NSFileManager defaultManager]removeItemAtPath: pathOfFileToDelete error:err];
    }
    return exists;
}
Run Code Online (Sandbox Code Playgroud)


小智 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
}
Run Code Online (Sandbox Code Playgroud)


小智 5

一个Swift3示例:

do {
 try FileManager.default.removeItem(atPath: path)
} catch {
 // catch potential error
}
Run Code Online (Sandbox Code Playgroud)