保存图片到相册

最近在深入的学习关于swift相关技术,虽然海做不出什么好的东西,但是感觉收获不少,相信总有一样能用到,所以就总结了一下,希望大家喜欢!

1.OC中的写法

在OC中,我们需要保存图片到相册需要调用这个方法:

  void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo); 

想来大家也都看过这个方法的头文件,在头文件中有这样一段话

    - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; 

意思是:想要将一张照片保存到相册中,这个可选的完成方法需要按照下面那个方法的格式来定义。 
所以,我们在OC中通常都是直接将这个方法拷贝出来,直接实现这个方法,举个栗子:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

     UIImageWriteToSavedPhotosAlbum(self.iconView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

 }
 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

     if (error) {
         NSLog(@"保存出错");
         return;
     }

     NSLog(@"保存成功");
 }

在上面这个栗子中,我通过手指触摸事件,将事先定义好的iconView中的图像保存到相册中。

而同样一个栗子,在Swift中应该怎么样实现呢?

2.swift中的写法

 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

     UIImageWriteToSavedPhotosAlbum(iconView.image, self, "image:didFinishSavingWithError:contextInfo:", nil)

 }

     func image(image: UIImage, didFinishSavingWithError: NSError?, contextInfo: AnyObject) {
     println("---")

     if didFinishSavingWithError != nil {
         println("错误")
         return
     }
     println("OK")
 }
同样的栗子,swift中的实现如上,在swift中,我们跳到头文件会发现是这样的,
  - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; 

还是OC中那一套,苹果并没有帮我们写好swift下的代码格式应该怎么写,所以很多人对此应该怎么使用会产生许多的疑惑,其实,就是像上面那样,将参数一一对应,以swift中函数的写法写出来就可以了。 

另外补充一点小知识点: 
上面的那个方法我们还可以这么写,

   // 提示:参数 空格 参数别名: 类型
 func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: AnyObject) {
     println("---")

 //        if didFinishSavingWithError != nil {
     if error != nil {
         println("错误")
         return
     }
     println("OK")
 }

类似这样的格式:(参数 参数别名: 类型)didFinishSavingWithError error: NSError? 
在外部调用时,显示的是didFinishSavingWithError这个参数名 
而在内部使用时,显示的是error这个参数别名,方便我们的使用,也更加类似OC中的写法。

iOS开发——实用篇Swift篇&保存图片到相册的更多相关文章

  1. ios开发——实用技术篇Swift篇&播放MP3

    播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...

  2. ios开发——实用技术篇Swift篇&地址薄、短信、邮件

    //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...

  3. ios开发——实用技术篇Swift篇&拍照

    拍照 // MARK: - 拍照 func fromPhotograph() { if UIImagePickerController.isSourceTypeAvailable(.Camera) { ...

  4. ios开发——实用技术篇Swift篇&照片选择

    照片选择 // MARK: - 选择照片 /*----- 选择照片 ------*/ @IBAction func addImageButtonClick() { let actionSheet = ...

  5. ios开发——实用技术篇Swift篇&系统声音

    系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...

  6. ios开发——实用技术篇Swift篇&视频

    视频 // MARK: - 播放视频 /*----- 播放视频 ------*/ func moviePlayerPreloadFinish(notification:NSNotification) ...

  7. ios开发——实用技术篇Swift篇&录音

    录音 // MARK: - 录音 /*----- 录音 ------*/ var recorder:AVAudioRecorder? //录音器 var player:AVAudioPlayer? / ...

  8. ios开发——实用技术篇Swift篇&加速计和陀螺仪

    加速计和陀螺仪 //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnim ...

  9. ios开发——实用技术篇Swift篇&多点触摸与手势识别

    多点触摸与手势识别 //点击事件 var atap = UITapGestureRecognizer(target: self, action: "tapDo:") self.vi ...

  10. iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用

    swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...

随机推荐

  1. lightoj 1021 (数位DP)

    题意:给你一个b进制的数,再给你一个十进制数k,你可以重新排列b进制数的每一位得到其他b进制数,问你这些数中有多少可以整除k? 思路:数位dp. #include <cstdio> #in ...

  2. bjfu1099 度度熊大战僵尸

    这也是2011年百度之星的一道题. 这题我就是乱搞搞过的,打代码之前自己心里也没底,不知道能不能过的. 我的做法很简单,就是按时间顺序依次构造能杀死的僵尸血量,找到第k小的.构造的方法也很暴力:对t时 ...

  3. 修改Zabbix默认运行账户

    默认Zabbix运行的账户是Zabbix,但在自动部署的时候,Agent与Server的先后顺序不定,而且官方不建议两者使用同一个账户.   所以,解压压缩包后,进入目录: vi configure ...

  4. Google Chart API 参考 中文版

    Google Chart API 参考 中文版 文档信息 翻译: Cloudream ,最后修改:02/22/2008 06:11:08 英文版版权归 Google , 转载此中文版必须以链接形式注明 ...

  5. bzoj 3698 XWW的难题(有源汇的上下界最大流)

    [题意] 对每个格子确定上下取整,使得满足1.A[n][n]=0 2.每行列前n-1个之和为第n个 3.格子之和尽量大. [思路] 设格子(i,j)上下取整分别为up(i,j)down(i,j),构图 ...

  6. Tkinter教程之Canvas篇(2)

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811888 '''Tkinter教程之Canvas篇(2)''''''9.创建item的tag ...

  7. UIButton 在 iOS7.0与iOS7.1 中关于enabled的一点区别

    前些日子,在一台iOS7.0的设备上进行调试,关于UIButton的一部分代码如下 1 self.btn_loadmore.enabled = NO; 2 [self.btn_loadmore set ...

  8. crontab 定时任务格式

    如下内容节选自<Linux Crontab 定时任务 命令详解> 用crontab -e 添加要执行的命令 添加的命令必须以如下格式: * * * * * /command path 前五 ...

  9. thymeleaf中的内联[ [ ] ]

    一.文本内联 [[…]]之间的表达式在Thymeleaf被认为是内联表达式,在其中您可以使用任何类型的表达式,也会有效th:text属性. <p>Hello, [[${session.us ...

  10. 转载 C#中静态类和非静态类比较

    转载原地址: http://www.cnblogs.com/NothingIsImpossible/archive/2010/07/28/1786706.html C#静态方法与非静态方法的区别不仅仅 ...