2012-10-17 19 views
31

पर डेटा बैकअप अक्षम करते समय विफल रहा है, मैं छवि फ़ाइलों को डाउनलोड करने और NSDocumentDirectory में स्टोर करने का प्रयास कर रहा हूं। ऐसा करने के लिए, मुझे iCloud और iTunes पर डेटा बैकअप बंद करना होगा। नीचे मेरी कोड हैं:CFURLSetResourcePropertyForKey NSDocumentDirectory

+(void)saveData:(NSData*)thedata:(NSString*)fileName 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:fileName]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    [fileManager createFileAtPath:localFilePath contents:thedata attributes:nil]; 
    //prevent files from backup on iCloud or iTune 
    NSURL *fileURL = [NSURL URLWithString:localFilePath]; 
    [self addSkipBackupAttributeToItemAtURL:fileURL]; 
} 

और मेरे addskipbackupattributetoitematurl के लिए:

+(BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)fileURL 
{ 
    if (![[NSFileManager defaultManager] fileExistsAtPath:[fileURL path]]) 
    { 
     NSLog(@"File %@ doesn't exist!",[fileURL path]); 
     return NO; 
    } 
    NSString *currSysVer = [[UIDevice currentDevice] systemVersion];  
    if ([currSysVer isEqualToString:@"5.0.1"]) 
    { 
     const char* filePath = [[fileURL path] fileSystemRepresentation]; 
     const char* attrName = "com.apple.MobileBackup"; 
     u_int8_t attrValue = 1; 
     int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); 
     NSLog(@"Excluded '%@' from backup",fileURL); 
     return result == 0; 
    } 
    else if (&NSURLIsExcludedFromBackupKey) 
    { 
     NSError *error = nil; 
     BOOL result = [fileURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; 
     if (result == NO) 
     { 
      NSLog(@"Error excluding '%@' from backup. Error: %@",fileURL, error); 
      return NO; 
     } 
     else 
     { 
      NSLog(@"Excluded '%@' from backup",fileURL); 
      return YES; 
     } 
    } 
    else 
    { 
     return YES; 
    } 
} 

हालांकि, BOOL result = [fileURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error]; निम्न संदेश

बनाया

CFURLSetResourcePropertyForKey विफल रहा क्योंकि उसे इस URL जो कोई योजना है पारित किया गया था : /var/mobile/Applications/CF69D567-1D37-4053-BFA8-5D0FCBD9C2B2/Documents/coffee.jpg

मैं सोच रहा हूं कि किसी को इस समस्या का सामना करना पड़ा है ??

+0

नरक ... वे भी इस पर कोई त्रुटि नहीं लौटते और परिणाम हाँ हो जाएगा। लेकिन यह "बहिष्कृत FromBackupKey" सेट नहीं करेगा। उन्होंने मुझे इसके लिए दो बार खारिज कर दिया :( –

उत्तर

133

हल हो गया। एक बार मैं

को

NSURL *fileURL = [NSURL URLWithString:localFilePath]; 

बदल

NSURL *fileURL = [NSURL fileURLWithPath:localFilePath]; 

सब कुछ पूरी तरह से काम करते हैं।

+0

जो कुंजी की कुंजी थी! ;-) अपवोट! – rockstarberlin

+0

जिसने मुझे दो और घंटों से छेड़छाड़ से बचाया! धन्यवाद! – SexyBeast

+0

आपने अपना जीवन बचाया! –

0

स्विफ्ट:

सेब के साथ
let fileURL = URL(fileURLWithPath: somepath)