数据未写入文件?
Data not being written to file?
我正在使用 FastttCamera 作为 AVFoundation 的包装器,以便在我的应用程序中实现相机。在我尝试使用以下代码保存捕获的图像之前,一切似乎都正常:
- (void)cameraController:(FastttCamera *)cameraController didFinishScalingCapturedImage:(FastttCapturedImage *)capturedImage
{
//Use the image's data that is received
pngData = UIImagePNGRepresentation(capturedImage.scaledImage);
NSLog(@"1 The size of pngData should be %lu",(unsigned long)pngData.length);
//Save the image someplace, and add the path to this transaction's picPath attribute
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
int timestamp = [[NSDate date] timeIntervalSince1970];
NSString *timeTag = [NSString stringWithFormat:@"%d",timestamp];
filePath = [documentsPath stringByAppendingString:timeTag]; //Add the file name
NSLog(@"The picture was saved at %@",filePath);
[self.imageWell setImage:capturedImage.scaledImage];
}
和
...
[pngData writeToFile:filePath atomically:YES]; //Write the file
NSLog(@"The pngData is written to file at %@",filePath);
NSLog(@"2 The size of this file should be %lu",(unsigned long)pngData.length);
self.thisTransaction.picPath = filePath;
...
我稍后尝试检索图片以在表格视图单元格中使用,但没有显示任何内容。所以我开始尝试跟踪哪里出了问题,显然数据实际上并没有写入文件路径指定的文件中。我从战略性放置的 NSLog
s:
获得以下控制台读数
The pngData is written to file at /var/mobile/Containers/Data/Application/114FC402-83E0-4D15-B1E0-68E09DAB34DC/Documents1431292149
The size of this file should be 213633
和这个 return 来自文件路径的文件:
The size of fileSizeFromFilePath is 0
我已经看过很多 SO 问题,但一直没弄明白。有人可以告诉我哪里出错了吗?
pngData 写入了不存在的错误路径 /path/to/sandbox/Documents1431292149
。
你应该替换
filePath = [documentsPath stringByAppendingString:timeTag];
和
filePath = [documentsPath stringByAppendingPathComponent:timeTag];
我正在使用 FastttCamera 作为 AVFoundation 的包装器,以便在我的应用程序中实现相机。在我尝试使用以下代码保存捕获的图像之前,一切似乎都正常:
- (void)cameraController:(FastttCamera *)cameraController didFinishScalingCapturedImage:(FastttCapturedImage *)capturedImage
{
//Use the image's data that is received
pngData = UIImagePNGRepresentation(capturedImage.scaledImage);
NSLog(@"1 The size of pngData should be %lu",(unsigned long)pngData.length);
//Save the image someplace, and add the path to this transaction's picPath attribute
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory
int timestamp = [[NSDate date] timeIntervalSince1970];
NSString *timeTag = [NSString stringWithFormat:@"%d",timestamp];
filePath = [documentsPath stringByAppendingString:timeTag]; //Add the file name
NSLog(@"The picture was saved at %@",filePath);
[self.imageWell setImage:capturedImage.scaledImage];
}
和
...
[pngData writeToFile:filePath atomically:YES]; //Write the file
NSLog(@"The pngData is written to file at %@",filePath);
NSLog(@"2 The size of this file should be %lu",(unsigned long)pngData.length);
self.thisTransaction.picPath = filePath;
...
我稍后尝试检索图片以在表格视图单元格中使用,但没有显示任何内容。所以我开始尝试跟踪哪里出了问题,显然数据实际上并没有写入文件路径指定的文件中。我从战略性放置的 NSLog
s:
The pngData is written to file at /var/mobile/Containers/Data/Application/114FC402-83E0-4D15-B1E0-68E09DAB34DC/Documents1431292149
The size of this file should be 213633
和这个 return 来自文件路径的文件:
The size of fileSizeFromFilePath is 0
我已经看过很多 SO 问题,但一直没弄明白。有人可以告诉我哪里出错了吗?
pngData 写入了不存在的错误路径 /path/to/sandbox/Documents1431292149
。
你应该替换
filePath = [documentsPath stringByAppendingString:timeTag];
和
filePath = [documentsPath stringByAppendingPathComponent:timeTag];