2017-09-25 9 views
1

私は画像を保存する方法を知りたいのですが、私はコアレターの写真の二等方性から得ています。コアデータに画像を保存する方法SWIFT

私は画像に触れるとライブラリから写真を選ぶことができますが、私の問題はアプリを閉じて画像を再オープンしたときです。

どのように画像を保存して、アプリが開き直すと、画像がImageViewの

で継続することができますが、このための最良の選択肢coredataですか?

class V1Menino: UIViewController, UITextFieldDelegate, GADBannerViewDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate,UIScrollViewDelegate { 

@IBOutlet weak var sViewV1: UIScrollView! 
@IBOutlet weak var imageV1: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.view.layoutIfNeeded() 

    self.sViewV1.minimumZoomScale = 1.0 
    self.sViewV1.maximumZoomScale = 6.0 

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(imageTapped(tapGestureRecognizer:))) 
    imageV1.isUserInteractionEnabled = true 
    imageV1.addGestureRecognizer(tapGestureRecognizer) 

} 

func viewForZooming(in scrollView: UIScrollView) -> UIView? { 
    return self.imageV1 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]){ 


    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    { 
     imageV1.image = image 
    } 
    self.dismiss(animated: true, completion: nil) 
} 

@objc func imageTapped(tapGestureRecognizer: UITapGestureRecognizer) 
{ 
    //let tappedImage = tapGestureRecognizer.view as! UIImageView 
    // sua acao 
    let image = UIImagePickerController() 
    image.delegate = self 
    image.sourceType = UIImagePickerControllerSourceType.photoLibrary 
    self.present(image,animated: true) 
    { 
     //depois disso ta completo 
    } 
} 
} 

答えて

0

いいえ、あなたのケースでは、コアデータは最適なオプションではありません。コアデータは、リレーショナルスキームを扱うときに便利です。
とにかくコアデータに画像を直接保存することは可能です(可能であっても)ことはできません。通常はイメージをローカルに保存し、コアデータ永続ストレージにそのパスを保存するだけです。
ドキュメントディレクトリにディレクトリを作成し、そこにイメージのコピーを保存するだけで十分です。
アプリケーションを開くと、このパスのデータを持つUIImageインスタンスを作成するだけです。

+0

あなたは、私がこれを行うことができる方法上の任意のチュートリアルを持っていますか、または私が読むことができる任意の文書がよりよく理解するために? –

0

画像データにCoreDataを使用しません。それは

あなたがでDocumentsディレクトリを取得することができますwrite(to:options:)

でそれを保存しUIImageからDataを取得するためにUIImageJPEGRepresentationを使用することができDocumentsディレクトリのどこかに保存する必要があります。How to find NSDocumentDirectory in swift?

私にはありませんあなたのアプリがどれほど複雑かを知っている。この1つのイメージのみを保存する必要がある場合は、Documentsディレクトリの下にサブフォルダを作成し、一定のファイル名を使用します。

画像の束を保存しておく必要がある場合は、CoreDataを使用して画像データではなくファイル名だけを保存することができます。

このチュートリアルでは、あなたが(しかし、PNGで)何をしたいのようなものを行います。https://www.hackingwithswift.com/example-code/media/how-to-save-a-uiimage-to-a-file-using-uiimagepngrepresentation

+0

私のアプリは基本的に写真アルバムですが、コースの仕事です。 2つ以上のビューを追加することができるので、1つの画像だけを追加できるビューがいくつかあります。私は何をお勧めしますか?私はアプリを完成させるためにこのデータを保存する必要があります。 –

+0

後で "photo-1.jpg"、 "photo-2.jpg"などの名前を付けて画像をドキュメントフォルダに保存します。より実際の名前では、名前はどこかに保存されます(CoreData、plistファイルなど) –

+0

これらの名前のライブラリ写真を保存する必要はありますか?これはどうすればいいですか?または、これらの名前の写真をフォルダに入れるように教えていますか?私は、ユーザーが自分のアルバムを設定できるように、iphoneライブラリから写真を取得する必要があります。 –

関連する問題