I am trying to download image files and store in NSDocumentDirectory
. In order to do so, I has to turn off data backup on iCloud and iTunes. Below are my codes:
我正在尝试下载图像文件和存储在NSDocumentDirectory。为了做到这一点,我必须关掉iCloud和iTunes上的数据备份。下面是我的代码:
+(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];
}
and for my addskipbackupattributetoitematurl:
和我的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;
}
}
However, the BOOL result = [fileURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];
created the following message
然而,BOOL结果= [fileURL setResourceValue:[NSNumber numberWithBool:YES] forKey:NSURLIsExcludedFromBackupKey error:&error];创建以下消息
CFURLSetResourcePropertyForKey failed because it was passed this URL which has no scheme: /var/mobile/Applications/CF69D567-1D37-4053-BFA8-5D0FCBD9C2B2/Documents/coffee.jpg
CFURLSetResourcePropertyForKey失败了,因为它通过了这个没有scheme的URL: /var/ mobile/applications /CF69D567-1D37-4053-BFA8-5D0FCBD9C2B2/Documents/coffee.jpg。
I'm just wondering if any encountered this problem??
我想知道是否有人遇到过这个问题?
2 个解决方案
#1
134
Solved. once I changed
解决了。有一次,我改变了
NSURL *fileURL = [NSURL URLWithString:localFilePath];
to
来
NSURL *fileURL = [NSURL fileURLWithPath:localFilePath];
everything work perfectly.
一切完美的工作。
#2
0
Swift:
迅速:
let fileURL = URL(fileURLWithPath: somepath)
#1
134
Solved. once I changed
解决了。有一次,我改变了
NSURL *fileURL = [NSURL URLWithString:localFilePath];
to
来
NSURL *fileURL = [NSURL fileURLWithPath:localFilePath];
everything work perfectly.
一切完美的工作。
#2
0
Swift:
迅速:
let fileURL = URL(fileURLWithPath: somepath)