ben farkındayım iki şey vardır:
uygulamanızın ürettiği edilir
1) Dosyalar (ve böyle bir değişkenin değerini depolamak için geçici metin dosyaları olarak uygulamayı kullanarak kullanıcının) değil bir sonucudur, daha sonra bu dosyalar Belge dizini yerine Kitaplık/Önbellek içine yerleştirilmelidir.
2) Ayrıca yedekleme değil dosyayı iCloud anlatmak için bir "atlama-backup" özelliğiyle bir dosyayı işaretlemeniz gerekir.
Sana hızla Library/Önbellek klasöründeki dosyalar bana yol veriyor ve aynı zamanda atlama yedekleme özelliğini eklemek basit MediaDirectory sınıf yazdı
adım 2. eksik olabilir düşünüyorum. Eğer Libary/Önbellek klasörüne Dosyanızı kaydettikten sonra
, sadece böyle bir şey gidin: Burada
[MediaDirectory addSkipBackupAttributeForFile:@"myTextFile.txt"];
tam sınıf var:
// 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
Sana almaya uygulamanızın kum havuzu bir anlık indirmek için Xcode kullanmak öneririm Hangi dosya ve dizinlerin oluşturulduğuna bir bakın. Belki PhoneGap korkak bir şey yapıyor. Ayrıca uygulamanın simülatörüne de bakabilirsin. –
Ve gizli dosyaları gösterdiğinizden emin olun çünkü birçok önbellek/uygulama ayrıntısı dizini gizlenmiştir (örn: Çekirdek Verileri harici kaynak depolama alanı). –
Simülatör dizinine baktığımda, "Caches" dizininde bir file__0.localstorage (Uygulamalar/uygulama/Kütüphane/Önbellekler) gösterir. Böylece bu, "doğru" yerde saklandığına dair fikrimi yeniden doğrular. –