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)