日記アプリを作成中です。
swiftでUIimagviewに表示された画像をrealmに保存したいです。
他クラスで生成したurlという変数を、別のクラスでrealmに保存したいです。
・できていること
UIImageViewに画像を表示する。
imageをphAssetを利用してURLにすることもできている。
realmに日付や内容は保存することができている。
swift
1@IBAction func imageTapGesture(_ sender: Any) { 2 changeImage() 3 } 4 // 画像パス関連(テスト) 5 // DocumentディレクトリのfileURL取得 6 func getDocumentsURL() -> NSURL { 7 let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] as NSURL 8 return documentsURL 9 } 10 11 // ディレクトリのパスにファイル名をつなげてファイルのフルパスを作る 12func fileInDocumentsDirectory(filename: String) -> String { 13 let fileURL = getDocumentsURL().appendingPathComponent(filename) 14 print(fileURL) 15 print("look") 16 return fileURL!.path 17 } 18 19func changeImage() { 20 21 let sourceType:UIImagePickerController.SourceType = UIImagePickerController.SourceType.photoLibrary 22 23 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary){ 24 25 let cameraPicker = UIImagePickerController() 26 cameraPicker.sourceType = sourceType 27 cameraPicker.delegate = self 28 29 self.present(cameraPicker, animated: true, completion: nil) 30 } 31 } 32 33 //アルバム画面で写真を選択した時 34 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 35 if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { 36 defer { 37 picker.dismiss(animated: true, completion: nil) 38 } 39 40 guard let phAsset = info[.phAsset] as? PHAsset else { return } 41 42 let options = PHContentEditingInputRequestOptions() 43 phAsset.requestContentEditingInput(with: options) { (input, info) in 44 //fullSizeImageURL に選択した画像のURLが入っているのでアンラップします 45 guard let url = input?.fullSizeImageURL else { return } 46 self.userImage.image = image 47 self.dismiss(animated: true, completion: nil) 48 49 } 50 51 }
このurlをバックボタン押した時にrealmに保存するようにしたいです。
swift
1@IBAction func backButton(_ sender: UIButton) { 2 let PenData:Data! 3 let titlePenData:Data! 4 let realm = try! Realm() 5 let diary = Diary() 6 PenData = canvasView.drawing.dataRepresentation() 7 titlePenData = titleView.drawing.dataRepresentation() 8 9 diary.date = hiniti 10 diary.context = PenData 11 diary.dateString = hiniti 12 diary.titlecontext = titlePenData 13 //ここにurlを呼び出しでrealmに保存したい。 14 //diary.value = 1 15 //STEP.3 Realmに書き込み 16 try! realm.write { 17 realm.add(diary, update:.all)}
初めは、画像をbase64に変更して保存しようとしましたが、容量が多すぎてできませんでした。
画像パスを取得してRealmに保存したい
こちらのサイトを見ながら進めています。
違う点は、違うクラスで読み取り、保存したい点です。
どなたかご教授よろしくお願いします。
あなたの回答
tips
プレビュー