#実現したいこと
attributedtextをrtfdファイルとして保存すること
#背景
現在まで、画像を含んだattributedTextをシリアライズしてuserdefaultに保存していました。
しかし、その方法だと画像が増えるとフリーズや重くなったり、という現象が発生したので、他の方法を探してみました。現在までの方法
#試してみた方法
DocumentsDirectoryを利用したファイルの保存方法
参考1
参考2
#該当コード
swift
1import UIKit 2import RealmSwift 3import CoreLocation 4class HenshuuViewController:UIViewController,CLLocationManagerDelegate, UITextFieldDelegate,UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextViewDelegate{ 5 6省略 7 8override func viewWillAppear(_ animated: Bool) { 9 super.viewWillAppear(animated) 10 super.viewDidLoad() 11 do{ 12 let attritext = try rtf読み込み処理() 13 textView.attributedText = attritext 14 15 }catch{print("a")} 16} 17 18 19 //MARK:-アトリビュート保存処理 20 func アトリビュート保存処理(textview:UITextView,forkey:String){ 21 // ドキュメントディレクトリの「ファイルURL」(URL型)定義 22 do { 23 let file = try textView.attributedText.fileWrapper(from: NSRange(location: 0, length: (textView.attributedText.length)), documentAttributes: [.documentType: NSAttributedString.DocumentType.rtf]) 24 saveData(data: file) 25 } catch { 26 /// 27 } 28 } 29 30 31 func saveData(data: FileWrapper){ 32 let file_name = "test.rtf" 33 34 if let dir = FileManager.default.urls( for: .documentDirectory, in: .userDomainMask ).first { 35 36 let path_file_name = dir.appendingPathComponent( file_name ) 37 38 do { 39 print("保存完了") 40 try data.write(to: path_file_name, options: .atomic, originalContentsURL: nil) 41 } catch { 42 //エラー処理 43 } 44 } 45 } 46 47 48//MARK:-アトリビュートテキスト読み込み処理 49// ドキュメントディレクトリの「ファイルURL」(URL型)定義 50 func rtf読み込み処理() throws -> NSAttributedString{ 51 var terms = Data() 52 //ディレクトリフォルダの指定 53 do{ 54 let url = FileManager.default.urls( for: .documentDirectory, in: .userDomainMask )[0] 55 56 //ディレクトリフォルダのファイル名まで指定 57 let name = url.appendingPathComponent("test.rtf") 58 terms = try Data(contentsOf: name) 59 60 }catch{ 61 62 throw FileError.faildRead 63 } 64 do{ 65 let attributeString = try NSAttributedString(data: terms, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil) 66 print(attributeString) 67 return attributeString 68 }catch { 69 print("ファイルの読み込みに失敗しました: (error.localizedDescription)") 70 throw FileError.faildRead 71 72 } 73 74 75 } 76 enum FileError: Error { 77 case notExitPath 78 case faildRead 79 } 80 81省略 82} 83
#困っていること
テキスト情報は保存・読み込み出来るのですが画像が読み込み出来ずに困っています。
いろいろ考えてみたのですが自分では見当がつかず質問させていただきました。
ご教授頂けるとありがたいです。宜しくおねがいします。
#追記
DocumentTypeをrtfとして保存すると読み込むことができました。
しかし、DocumentTypeをrtfdとして保存すると読み込むことができませんでした。
その場合、rtfdファイルではなくフォルダが出来ています。
rtfdファイルとして保存すると正常に動くと考えるのですが良い方法が思いつかないです。
わかる方がいましたらヒントだけでも頂ければ嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/08 05:44
2020/06/08 10:06