在我的应用程序启动时,它将一个库从我的资源文件夹复制到iOS设备上的文档目录。这是第一次发布时的一次性过程,再也没有接触过。 Apple今天拒绝了我的应用程序:
我们发现您的应用不遵循iOS数据存储 指南,不符合App Store Review 准则。
iOS数据存储指南表明只有内容即 用户使用您的应用创建,例如文档,新文件,编辑等, 应该由iCloud支持。
您的应用使用的临时文件应仅存储在/ tmp中 目录;请记得删除存储在此位置的文件 当用户退出应用程序时。
可以重新创建但必须保持正常运行的数据 您的应用 - 或者因为客户希望它可以离线使用 使用 - 应标记为“不备份”属性。对于
NSURL
对象,添加NSURLIsExcludedFromBackupKey
属性以防止 备份相应的文件。对于CFURLRef
个对象,请使用 相应的kCFURLIsExcludedFromBackupKey
属性。
我不确定如何设置不备份属性或者它是否是我需要的。任何人都可以根据我的代码告诉我这是如何完成的?
-(void) progress
{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil;
NSString *dataPath = [documentPath stringByAppendingPathComponent:pathWeSet];
if (![fileManager fileExistsAtPath:dataPath]) {
NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSString *dataPath = [bundlePath stringByAppendingPathComponent:pathWeSet];
timer = [NSTimer timerWithTimeInterval:0.4 target:self selector:@selector(updateProgressView) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[timer fire];
if (dataPath) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[fileManager copyItemAtPath:dataPath toPath:dataPath error:nil];
});
}
}
}
由于
答案 0 :(得分:3)
Apple发布了File System Programming Guide您应该阅读并遵循的内容。听起来您的库是应用程序的内部细节,用户不应该看到。因此,它不应该在Documents目录中。请考虑使用Library或Library / Caches目录。