iOS開発——実用編Swift編&写真をアルバムに保存

7448 ワード

写真をアルバムに保存
最近、swiftに関する技術を深く勉強しています.海では何もできませんが、収穫が少なくないと思います.いつも同じように使えると信じています.だから、まとめてみました.皆さん、好きになってください.
1.OCでの書き方
OCでは、アルバムに画像を保存するには、この方法を呼び出す必要があります.
 1 void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo); 

皆さんもこの方法のヘッダファイルを見たことがあると思いますが、ヘッダファイルにはこんな話があります
   1 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo; 

1枚の写真をアルバムに保存するには、このオプションの完成方法は以下の方法のフォーマットで定義する必要があります.だから、OCでは通常、この方法を直接コピーして、この方法を直接実現して、栗を挙げます.
 1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 2 
 3     UIImageWriteToSavedPhotosAlbum(self.iconView.image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
 4 
 5 }
 6 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
 7 
 8     if (error) {
 9         NSLog(@"    ");
10         return;
11     }
12 
13     NSLog(@"    ");
14 }

 
上の栗では、イベントを指で触って、あらかじめ定義したiconViewの画像をアルバムに保存しています.
同じ栗でも、Swiftではどのように実現すればいいのでしょうか.
2.swiftでの書き方
 1 override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
 2 
 3     UIImageWriteToSavedPhotosAlbum(iconView.image, self, "image:didFinishSavingWithError:contextInfo:", nil)
 4 
 5 }
 6 
 7     func image(image: UIImage, didFinishSavingWithError: NSError?, contextInfo: AnyObject) {
 8     println("---")
 9 
10     if didFinishSavingWithError != nil {
11         println("  ")
12         return
13     }
14     println("OK")
15 }

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

OC , swift , , , , , swift 。 

もう一つの小さな知識点を補足します.上の方法はこのように書くことができます.
 1   //   :          :   
 2 func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: AnyObject) {
 3     println("---")
 4 
 5 //        if didFinishSavingWithError != nil {
 6     if error != nil {
 7         println("  ")
 8         return
 9     }
10     println("OK")
11 }

 
このようなフォーマット:(パラメータパラメータ別名:タイプ)didFinishSavingWithError:NSError?外部呼び出し時にdidFinishSavingWithErrorというパラメータ名が表示され、内部使用時にerrorというパラメータ別名が表示され、私たちの使用を便利にし、OCの書き方にも似ています.