使用模拟器将UIImage保存到磁盘ios 8不起作用

时间:2015-06-03 01:33:44

标签: objective-c file ios8

以下代码适用于ios< 8但无效与xcode 6.1.1和ios 8设备模拟器

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

有没有人知道这是否是模拟器问题我没有真正的ios8设备可以检查。

4 个答案:

答案 0 :(得分:0)

所以你在这里遇到了许可问题。我不确定为什么它在8.0之前有效,但我看到了(有些东西明显改变了):

  

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

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

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

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

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

    • /用户/用户/资源库/开发商/ CoreSimulator /设备//文档/

答案 1 :(得分:0)

我记得你不能给出像" / Users / MyUser / Desktop /"因安全性和沙箱原因而导致iOS版。

结帐

NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);

找到合适位置的文件

NSSearchPathDirectory定义了许多可以使用的路径。希望这个帮助

答案 2 :(得分:0)

    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)

试试这个。

Swift 3.0

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