我目前使用我创建的这两种方法在我的应用程序中保存并从磁盘读取:
func unarchiveWithFileName(fileName: String) -> AnyObject? {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0] as String
let path = "\(documentsDirectory)/\(fileName)"
return NSKeyedUnarchiver.unarchiveObjectWithFile(path)
}
func archiveObjectWithFileName(fileName: String, object: AnyObject) {
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0] as String
let path = "\(documentsDirectory)/\(fileName)"
NSKeyedArchiver.archiveRootObject(object, toFile: path)
}
我的申请因“存储在用户的iCloud上”被拒绝了,我有几个问题。
我遇到了禁用iCloud备份的此功能:
- (BOOL)addSkipBackupAttributeToItemAtPath:(NSString *) filePathString
{
NSURL* URL= [NSURL fileURLWithPath: filePathString];
assert([[NSFileManager defaultManager] fileExistsAtPath: [URL path]]);
NSError *error = nil;
BOOL success = [URL setResourceValue: [NSNumber numberWithBool: YES]
forKey: NSURLIsExcludedFromBackupKey error: &error];
if(!success){
NSLog(@"Error excluding %@ from backup %@", [URL lastPathComponent], error);
}
return success;
}
但我该怎么办呢?
另外,在我的应用程序中,我保存了临时文件,我用新文件一直替换它们。 Apple告诉我,我应该将它们保存在tmp
目录中,但是如果我将它保存在文档目录中,我的应用程序会被拒绝吗?
我的最后一个问题是,正如我在上一个问题中所说,我一直在替换文件。 Apple提到我应该确保删除临时文件,但是我可以简单地在路径中替换它们吗?例如:
archiveObjectWithFileName("fn", NSString())
然后是
archiveObjectWithFileName("fn", UIImage())
文件是否会被替换,或者我仍然需要将其删除?