在iPhone中以特定名称在Documents目录中保存文件失败

时间:2018-08-14 04:08:00

标签: objective-c iphone xcode

我正在使用以下代码将文件保存在iPhone文档目录中

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
NSString *mediaFile = [documentsPath stringByAppendingPathComponent:[message getMediaName]];
NSString *filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%@", mediaFile, IMAGE_EXTENSION]];
NSError *error = nil;
[data writeToFile:filePath options:NSDataWritingAtomic error:&error];

filePath的示例为

  

/用户/ Umar /库/开发人员/ CoreSimulator /设备/ 8B419461-4E18-4E2F-923D-01092CA2263C /数据/容器/数据/应用程序/ AD869525-92F9-4C5A-8FCE-CF67F05F8CEA /文档/用户/ Umar /库/开发人员/ CoreSimulator /设备/ 8B419461-4E18-4E2F-923D-01092CA2263C /数据/容器/数据/应用程序/ AD869525-92F9-4C5A-8FCE-CF67F05F8CEA / Documents / 32286_1_44f74dc9d027d53bfa3e0bde9a28bf49。

到文档的路径确实存在,并且我已经通过Finder检查了。不确定为什么我遇到错误Error Domain=NSCocoaErrorDomain Code=4 "The folder “32286_1_44f74dc9d027d53bfa3e0bde9a28bf49.jpg” doesn’t exist."

1 个答案:

答案 0 :(得分:3)

问题出在这两行

NSString *mediaFile = [documentsPath stringByAppendingPathComponent:[message getMediaName]];
NSString *filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%@", mediaFile, IMAGE_EXTENSION]];

mediaFile的输出是

/Users/Umar/Library/Developer/CoreSimulator/Devices/8B419461-4E18-4E2F-923D-01092CA2263C/data/Containers/Data/Application/AD869525-92F9-4C5A-8FCE-CF67F05F8CEA/Documents/32286_1_44f74dc9d027d53bfa3e0bde9a28bf49

filePath的输出是

的组合

documentPath + mediaFile + Image Extension

问题是文档路径存在两次,这就是为什么编译器在查找路径和返回错误时会遇到问题。

我希望这会对您有所帮助。