वहाँ दो चीजें हैं जो मैं के बारे में पता कर रहा हूँ कर रहे हैं:
1) फ़ाइलें है कि आपके एप्लिकेशन द्वारा उत्पन्न कर रहे हैं (और आपके एप्लिकेशन का उपयोग उपयोगकर्ता) इस तरह के एक चर का मान संग्रहीत अस्थायी पाठ फ़ाइलों के रूप में करने का एक परिणाम नहीं, तो इन फ़ाइलों को दस्तावेज़ निर्देशिका के बजाय लाइब्रेरी/कैश में रखा जाना चाहिए।
2) आपको फ़ाइल को बैकअप न करने के लिए iCloud को बताने के लिए "skip-backup" विशेषता के साथ एक फ़ाइल को भी चिह्नित करना होगा।
मुझे लगता है कि आप चरण 2.
अनुपलब्ध हो सकता है मैं एक साधारण MediaDirectory वर्ग जो जल्दी से मुझे लाइब्रेरी/कैश फ़ोल्डर में फ़ाइलें करने के लिए पथ देता है और भी छोड़ बैकअप विशेषता जोड़ने लिखा था।
के बाद आप पुस्तकालय/कैश फ़ोल्डर में अपनी फ़ाइल सहेज, तो आप बस कुछ इस तरह जाना:
[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 का उपयोग सुझाव है एक फाइल और निर्देशिकाओं को बनाया जा रहा है पर एक नज़र डालें। शायद फोनगैप कुछ मज़ाकिया कर रहा है। आप ऐप की सिम्युलेटर निर्देशिका में भी देख सकते हैं। –
और छिपी हुई फाइलें दिखाना सुनिश्चित करें क्योंकि कई कैश/कार्यान्वयन विस्तार निर्देशिकाएं छिपी हुई हैं (उदा: कोर डेटा बाहरी संसाधन भंडारण)। –
यदि मैं सिम्युलेटर निर्देशिका में देखता हूं, तो यह "कैश" निर्देशिका (अनुप्रयोग/ऐप/लाइब्रेरी/कैश) में file__0.localstorage दिखाता है। तो यह मेरे विचार को फिर से पुष्टि करता है कि यह "सही" जगह में सहेजा गया है। –