目标C - 使用模拟器将UIImage保存到磁盘 iOS 8 不起作用



下面的代码在ios上运行良好<</strong>与xcode 6.1.1和ios 8设备模拟器

不兼容
NSData *imageData = UIImagePNGRepresentation(shareSnapshot);
[imageData writeToFile:@"/Users/MyUser/Desktop/123.png" atomically:YES];

是否有人知道这是一个模拟器的问题,我没有一个真正的设备与ios8检查

所以你在这里遇到了权限问题。我不确定为什么在8.0之前可以工作,但我看到(一些明显的变化):

操作无法完成。(Cocoa错误513)

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ErrorHandlingCocoa/ErrorObjectsDomains/ErrorObjectsDomains.html//apple_ref/doc/uid/TP40001806-CH202-CJBGAIBJ

在实际设备上运行时,您将遇到问题。处理这个问题的更好方法是将数据保存到应用程序的文档目录中。

  1. 通过nssearchpathfordirectoresindomains (NSDocumentDirectory, NSUserDomainMask, YES)获取目录路径
  2. 使用stringByAppendingPathComponent附加文件名

然后您可以通过访问模拟器应用程序目录来验证它是否正确保存:

  • /用户/用户/图书馆/开发/CoreSimulator/设备//文件/

我记得由于安全和沙盒的原因,你不能为iOS提供像"/Users/MyUser/Desktop/"这样的路径。

查看

NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

文档查找合适的位置

NSSearchPathDirectory定义了许多您可以使用的路径。希望能有所帮助

    UIGraphicsBeginImageContext(self.frame.size);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Now I use the "screenshot"
NSString *path = [NSHomeDirectory() stringByAppendingString:@"/image.jpg"];
if ([UIImageJPEGRepresentation(image, 1) writeToFile:path atomically:YES]) {
    NSLog(@"save ok");
}
else {
    NSLog(@"save failed");
}

试试这个

3.0迅速

// Create path.
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let filePath = "(paths[0])/MyImageName.png"
// Save image.
UIImagePNGRepresentation(image)?.writeToFile(filePath, atomically: true)

相关内容

  • 没有找到相关文章

最新更新