iOS 每次运行沙盒路径变化(NSSearchPathForDirectoriesInDomains)

mac2024-05-10  28

最近在编写项目的时候发现,将一个文件路径存储到DB中之后,再此运行的时候,沙盒的路径变了,百度之后发现: iOS8,Xcode6之后,由于安全问题,苹果将沙盒路径改成动态路径,每次运行之后,会将以前的沙盒下的东西COPY备份,然后删除以前的沙盒路径,再新建一个路径,将COPY下来的东西啊,放到新的路径下。 这也就导致了我的项目存了路径,也找不到文件的问题。

那针对以上问题,有以下解决方法:

// 将以前的路径分解,取得自定义文件夹名,或者文件名,再重新拼路径 NSArray *pathList = [databasePath componentsSeparatedByString:@"/"]; // 获得新的沙盒路径 NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDirectory = [directoryPaths objectAtIndex:0]; // 拼新的路径 NSString *currentImagePath = [documentDirectory stringByAppendingPathComponent:FILE_NAME_ORIGINAL_IMAGE]; currentImagePath = [currentImagePath stringByAppendingPathComponent:[pathList lastObject]]; // 取得文件 NSFileManager *manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:currentImagePath]) { NSData *fileData = [manager contentsAtPath:currentImagePath]; return [UIImage imageWithData:fileData]; }
最新回复(0)