我正在与其他人一起开发iPhone应用程序。该应用程序适合我,但他遇到了一个错误。我们认为这个错误与他为同一个应用程序获取多个应用程序目录这一事实有关。在我的〜/ Library / Application Support / iPhone模拟器/用户/应用程序中,我一直只有一个文件夹。
他说当他只在这个应用程序上工作时,他将获得3或4个目录。我们认为这是我们的问题,因为我们的错误与显示存储在应用程序的Documents文件夹中的图像有关。有谁知道为什么他最终会有多个目录或如何阻止它?
修改
以下是将图像写入文件的代码:
NSData *image = [NSData dataWithContentsOfURL:[NSURL URLWithString:[currentArticle articleImage]]];
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *imagePath = [array objectAtIndex:0];
NSFileManager *NSFM = [NSFileManager defaultManager];
BOOL isDir = YES;
if(![NSFM fileExistsAtPath:imagePath isDirectory:&isDir])
if(![NSFM createDirectoryAtPath:imagePath attributes:nil])
NSLog(@"error");
imagePath = [imagePath stringByAppendingFormat:@"/images"];
if(![NSFM fileExistsAtPath:imagePath isDirectory:&isDir])
if(![NSFM createDirectoryAtPath:imagePath attributes:nil])
NSLog(@"error");
imagePath = [imagePath stringByAppendingFormat:@"/%@.jpg", [currentArticle uniqueID]];
[image writeToFile:imagePath atomically:NO];
以下是我需要图片时获取路径的代码:
- (NSString *)imagePath
{
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *imagePath = [array objectAtIndex:0];
return [imagePath stringByAppendingFormat:@"/images/%@.jpg", [self uniqueID]];
}
该应用程序对我很有用,但我的合作伙伴说图像不是间歇性出现的,他注意到他在Applications文件夹中有多个目录。
答案 0 :(得分:0)
我遇到了这个问题(我在应用文档目录中保存了照片),并且在每次新构建之后,目录都被重命名,因此我的路径不再有效。我编写了这两个函数(在我的app委托中),它将为我提供一个路径,用于保存或从文档或临时目录中加载的文件。即使app目录发生了变化,只要您只存储文件名而不是完整路径,然后使用辅助函数在以后需要时获取路径就可以了。这是我的功能:
+ (NSString*)fullPathToFile:(NSString*)file {
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:file];
}
+ (NSString*)fullPathToTemporaryFile:(NSString*)file {
return [NSTemporaryDirectory() stringByAppendingPathComponent:file];
}
像魅力一样。