Мое приложение только что было отклонено от Apple, потому что я храню свои ресурсы в папке Documents! Папка «Документы» автоматически синхронизируется с iCloude, поэтому в «Документах» должны храниться только данные, созданные пользователем. Все данные приложения должны идти в комплекте приложений.
Я использую следующий метод в моем проекте
- (NSString *)filePath:(NSString *)fileName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:fileName];
return path;
}
Например, в следующей строке разархивируйте мои ресурсы в папке документов.
[SSZipArchive unzipFileAtPath: zipFileName toDestination: [self filePath: @ ""]];
Как я могу переместить эти файлы и образы папки ресурсов в комплект приложений и получить к ним доступ?
[EDIT]
- (NSString *)filePath:(NSString *)fileName {
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/DoNotBackUp"];
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
[[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil];
// Set do not backup attribute to whole folder
if (iOS5) {
BOOL success = [self addSkipBackupAttributeToItemAtURL:path];
if (success)
NSLog(@"Marked %@", path);
else
NSLog(@"Can't marked %@", path);
}
}
path = [path stringByAppendingPathComponent:fileName];
return path;
}
/*
set the document files attribute to marked "do not backup"
*/
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSString *)path
{
const char* filePath = [path fileSystemRepresentation];
const char* attrName = "com.apple.MobileBackup";
u_int8_t attrValue = 1;
int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0);
return result == 0;
}
Где iOS5 - это переменная BOOL:
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
iOS5 = NO;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"5.0.1"))
iOS5 = YES;
Спасибо.