您的位置:首页 > 移动开发 > Swift

ios-Swift中如何保存图片到本地

2017-10-08 18:48 1646 查看
我们知道在OC中保存图片到本地需要写这么一个方法,然后这里面的第一个参数传入的就是图片,第二个参数传入的是监听的对象,第三个参数传入的是监听的方法,第四个参数传的是上下文。

//写入到相册
UIImageWriteToSavedPhotosAlbum(currentImage, self, #selector(image(image:didFinishSavingWithError:contextInfo:)), nil)我们点进这个函数进去看的时候会发现这个函数上面会有这么一行东西,这一行东西其实就是我们的监听方法的名字,那么我们如何在Swift中根据这个OC形式的函数去写相应的Swift的函数呢?
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo;

我们应该满足以下的一些条件,首先函数名要一样,然后OC中的(UIImage *)对应的就是我们冒号: 后面的类型,还有就是(UIImage *)后面的image对应的就是我们的参数名,然后OC中的didFinishSavingWithError:(NSError *)error,这个didFinishSavingWithError这个我们可以理解为是为了能让人能看懂,所以我们在Swift中就要写对应的外部参数,然后我们后面的contextInfo:(void *)contextInfo这个写成contextInfo:AnyObject?
这样是因为在(void *)前面的和后面的名字都是相同的所以我们写一个就可以了,还有就是(void *)在OC中是id类型,相当于Swift中的AnyObject。我们最好按照这个规范来,我测试了下我们把image的名字改成image1也是可以的,也就是说可能对函数名字没有要求,然后将contextInfo的类型改成Any?类型也是可以了说明对我们写的函数的参数的类型可能没有限制,但是我们一旦把contextInfo这个参数删掉就崩溃了,所以不过我们最好还是根据OC中的那个函数来写。这样不会出错。
@objc private func image(image:UIImage,didFinishSavingWithError error:NSError?,contextInfo:AnyObject?)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: