我的应用程序被拒绝了,因为它备份了太多数据给iCloud。
为了解决这个问题,我必须将所有文件放在ApplicationSupportDirectory中的新目录中。 到目前为止,我无法做到这一点,我无法弄清楚似乎是什么问题。
到目前为止,这是我的代码:
AppDelegate.m类:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
NSString* string = [[self applicationDocumentsDirectory] absoluteString];
if (![[NSFileManager defaultManager] fileExistsAtPath:string isDirectory:NULL]) {
NSError *error = nil;
[[NSFileManager defaultManager] createDirectoryAtPath:string
withIntermediateDirectories:YES attributes:nil error:&error];
if (error){
NSLog(@"I'm not even making your stupid dir");
}
}
[self addSkipBackupAttributeToItemAtURL:[self applicationDocumentsDirectory]];
return YES;
}
- (NSURL *)applicationDocumentsDirectory
{
NSString *appSupportDir =
[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask,
YES) lastObject];
appSupportDir = [appSupportDir stringByAppendingPathComponent:@"MyAppDirectory"];
NSLog(appSupportDir);
return [NSURL URLWithString:appSupportDir];}
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
{
// 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;
}
但最后,我得到一个错误: [1535:60b]从备份中排除(null)错误(null);
我有什么遗失的吗? 首先,我的烦恼是 - 我是否应该编写任何代码,甚至告诉我我希望我的所有方面都在该特定文件夹中,以后我想跳过备份? 如果我应该这样做,我应该在哪里? AppDelegate.m或其他地方?
AppDevelopment的这部分是我之前从未遇到过的,所以我真的迷失在这里。
答案 0 :(得分:0)
好像你没有在任何地方创建你的目录。在调用addSkipBackupAttributeToItemAtURL
之前,如果目录存在则添加验证并在需要时创建它。
if (![[NSFileManager defaultManager] fileExistsAtPath:[self applicationDocumentsDirectory] isDirectory:NULL]) {
NSError *error = nil;
[[NSFileManager defaultManager] createDirectoryAtPath:[self applicationDocumentsDirectory] withIntermediateDirectories:YES attributes:nil error:&error];
if (error){
//Something went wrong
}
}