2017-09-25 75 views
1

我想知道如何將圖像保存在coredata上的照片上。如何在覈心數據上保存圖像SWIFT

我有一個imageView,當它觸摸它時,我可以從庫中選擇一張照片我的問題是當我關閉應用程序並重新打開圖像不存在。

我如何保存圖像和當應用程序重新打開圖像繼續在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目錄

您可以使用UIImageJPEGRepresentationUIImage得到Data,然後用write(to:options:)

保存你可以用得到的文件目錄:How to find NSDocumentDirectory in swift?

我不知道你的應用程序有多複雜。如果您只需要存儲這一個圖像,那麼在Documents目錄下創建一個子文件夾並使用一個常量文件名。

如果你需要存儲一堆圖像(並跟蹤它們),那麼你可以使用CoreData來存儲文件名(而不是圖像數據)。

本教程確實像你想要的東西(但PNG):https://www.hackingwithswift.com/example-code/media/how-to-save-a-uiimage-to-a-file-using-uiimagepngrepresentation

+0

我的應用程序是一個課程的作品,它基本上是一個相冊。有一些視圖只能添加一個圖像,因爲它具有可以添加2個或更多視圖的視圖。你推薦我使用什麼?我只需要保存這些數據來完成我的應用程序。 –

+0

將圖像保存到文檔文件夾中,使用名稱可以稍後查找「photo-1.jpg」,「photo-2.jpg」等。對於簡單的學習應用程序,這很好。更真實的名稱將存儲在某個地方(例如CoreData,plist文件等) –

+0

我是否需要使用這些名稱來保存庫照片?我該怎麼做呢?或者你是否告訴我把這些名字的照片放在文件夾中?我需要從iphone庫中獲取照片,以便用戶可以設置自己的相冊。 –