私が知っ二つのものがあります。
1)、このような変数の値を格納するための一時的なテキストファイルとしてあなたのアプリ(とないあなたのアプリを使用するユーザの結果によって生成されたファイル)は、これらのファイルはDocumentディレクトリではなくLibrary/Cacheに配置する必要があります。
2)iCloudにファイルをバックアップしないように指示するには、ファイルに「skip-backup」属性を付ける必要があります。
私はあなたがステップ2
を逃すかもしれないと思う私はすぐに私のライブラリ/キャッシュフォルダ内のファイルへのパスを与え、また、スキップバックアップ属性を追加し、簡単なMediaDirectoryクラスを書きました。あなたは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
私はあなたが取るために、アプリケーションのサンドボックスのスナップショットをダウンロードするにはXcodeのを使うことをお勧めどのファイルとディレクトリが作成されているかを調べます。おそらく、PhoneGapは何か不気味なことをしています。また、アプリのSimulatorディレクトリも見ることができます。 –
キャッシュ/実装の詳細ディレクトリの多くが隠されているため、隠しファイルを表示するようにしてください(例:Core Data外部リソースストレージ)。 –
シミュレータディレクトリを見ると、 "キャッシュ"ディレクトリ(Applications/app/Library/Caches)にファイル_0.localstorageが表示されます。それは、それが「正しい」場所に保存されているという私の考えを再確認するものです。 –