내가 알고 있는데 두 가지가 있습니다
당신의 응용 프로그램에 의해 생성되는
1) 파일 (및 변수의 값을 저장하기 위해 임시 텍스트 파일로 응용 프로그램을 사용하여 사용자)의 결과가 아니라, 이 파일은 Document 디렉토리 대신 Library/Cache에 저장해야합니다.
2) iCloud가 파일을 백업하지 않도록 파일에 "skip-backup"속성을 표시해야합니다.
난 당신이 내가 빨리 도서관/캐시 폴더에있는 파일에 나에게 경로를 제공하고 또한 스킵 백업 속성을 추가하는 간단한 MediaDirectory 클래스를 썼다
2 단계를 누락 될 수 있습니다 생각합니다. 당신이 Libary/캐시 폴더에 파일을 저장 한 후
, 당신은 단순히 이런 식 이동 : 여기
[MediaDirectory addSkipBackupAttributeForFile:@"myTextFile.txt"];
전체의 클래스입니다 :
// Header File
// ----------------------------------------------------------------------
// This class takes a file name (including extension) and returns
// the path to that file in the Library/Cache folder
// ----------------------------------------------------------------------
#import <Foundation/Foundation.h>
@interface MediaDirectory : NSObject
+(NSString *) mediaPathForFileName:(NSString *) fileName;
+(NSString *) mediaPathForFileName:(NSString *) fileName inSubDirectory:(NSString *) subDirectory;
+ (BOOL)addSkipBackupAttributeToFile:(NSString *) fileName;
+ (BOOL)addSkipBackupAttributeToFile:(NSString *) fileName inSubDirectory:(NSString *) subDirectory;
@end
// Implementation File
#import "MediaDirectory.h"
#include <sys/xattr.h>
@implementation MediaDirectory
+(NSString *) mediaPathForFileName:(NSString *) fileName
{
NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [directoryPaths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", cachesDirectory, fileName];
return filePath;
}
// if an image needs to be stored in a sub folder called "images"
+(NSString *) mediaPathForFileName:(NSString *) fileName inSubDirectory:(NSString *) subDirectory
{
NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [directoryPaths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@/%@", cachesDirectory, subDirectory, fileName];
return filePath;
}
//+ (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
+ (BOOL)addSkipBackupAttributeToFile:(NSString *) fileName
{
const char* filePath = [[self mediaPathForFileName:fileName] 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;
}
+ (BOOL)addSkipBackupAttributeToFile:(NSString *) fileName inSubDirectory:(NSString *) subDirectory
{
const char* filePath = [[self mediaPathForFileName:fileName inSubDirectory:subDirectory] 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;
}
@end
나는 당신이 취할 앱의 샌드 박스의 스냅 샷을 다운로드 엑스 코드를 사용하는 것이 좋습니다 것입니다 어떤 파일과 디렉토리가 생성되는지 살펴보십시오. 아마 PhoneGap은 뭔가 펑키하고 있습니다. 또한 앱의 시뮬레이터 디렉토리를 볼 수도 있습니다. –
그리고 많은 캐시/구현 세부 정보 디렉토리가 숨겨져 있기 때문에 숨김 파일을 표시해야합니다 (예 : Core Data 외부 리소스 저장소). –
시뮬레이터 디렉토리를 보면 "캐시"디렉토리 (Applications/app/Library/Caches)에 file__0.localstorage가 표시됩니다. 그래서 그것은 그것이 "올바른"장소에 저장되었다는 나의 생각을 재확인합니다. –