質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2049閲覧

FileWrapperを用いたrtfdファイルの保存、読み込みについて

Daisuke0315

総合スコア23

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/05/09 05:25

編集2020/05/10 03:21

Todoアプリを作っています

【やりたいこと】
EvernoteやiPhone純正メモのようにテキストや画像を貼り付け、書き込み・読み込み出来るメモを作りたい。Rtfdファイルの保存・読み込みをしたいが検討がつかない。

【試したこと】
https://qiita.com/kyam_/items/f08ba6d47f233ef04860
を参考にしながらtextviewにUIImagePickerControllerを使ってNSTextAttachmentで画像を貼り付けました。
イメージ説明

このテキストと画像を含んだファイルをrtfdファイルとしてユーザー端末に保存しuuuidで紐付けようと考えました。

https://teratail.com/questions/139182
を参考にして、このtextviewをrtfdファイルとして保存読み込みができれば、画像も読み込ませられる、と考えましたがfilewrapperの使い方がわかりませんでした。

https://developer.apple.com/documentation/foundation/nsattributedstring/1527502-rtfdfilewrapper
を参考にしてrtfdFileWrapperを用いてidと紐付けて保存することが適当だと考えましたがどうやっていいか検討がつかず、RtfdのfileWrapperに関する情報を調べてみてもいい方法を見つけることが出来ませんでした。rtfdfilewrapperの使い方についてヒントだけでも教えていだきたいです。もしくはもっといい方法があれば教えて頂ければ嬉しいです。

【補足情報】
Xcode11.4 macOS Catalina10.15.4 Swift5.2 iOS13.3.1

【最後に】
拙い質問で恐縮ですが教えて頂ければ嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/05/10 00:47

画面遷移の部分はどのように実装されていますでしょうか。 コードを提示したいただいた方がより確実な回答がつくと思います。 ただ、流れをみた感じattributedTextをコピー(値渡し)すれば良さそうに見えますが、いかがでしょうか。
Daisuke0315

2020/05/10 02:54

お返事ありがとうございます。画面遷移はこのようにtextしか渡していないです。 let nav = self.navigationController //呼び出し元のView Controllerを遷移履歴から取得しパラメータを渡す let InfoVc = nav!.viewControllers[nav!.viewControllers.count-2] as! HenshuuViewController InfoVc.詳細を入れる変数 = shousaiTextView.text navigationController?.popToViewController(navigationController!.viewControllers[navigationController!.viewControllers.count - 2], animated: true)
TsukubaDepot

2020/05/10 02:59

推測なので実現できるかわかりませんが、 shousaiTextView.attributedText を渡した上、遷移先でコピーすれば良さそうに思えますが、いかがでしょうか。 本質的にはこの質問と同じようにおもえます。 https://teratail.com/questions/250323
Daisuke0315

2020/05/10 03:09

なるほど、tsukudaさんのおっしゃっていることは値渡しの方法、ということですね。確かに良さそうですね。 すみません、僕の質問の仕方が悪かったです。 画像とテキストを含んだrtfdファイルの保存と読み込みの方法が知りたいです。 アプリを消して、再起動したときにも同じ情報が表示されるという仕組みです。 質問が悪くて申し訳有りません。
TsukubaDepot

2020/05/10 03:16

質問のタイトルは「FileWrapperを用いたrtfdファイルの保存、読み込みについて」となっていましたが、質問の途中から「しかし編集したtextviewを渡しても画像は拾ってこれません(textしか渡してないので当然ですが・・・)」と画面遷移を匂わせる内容になっていたので、どちらか確認するためにコメントしました。 もし、単純に保存ということであれば、質問を整理していただけないでしょうか(質問は後からでも編集できます)。 また、保存はどこに保存する予定なのでしょうか。 保存先によっては保存できる値型が限定される場合がありますので工夫が必要になりそうです。 この辺りをもうちょっと整理していただければと思います。
Daisuke0315

2020/05/10 03:19

質問が悪くて申し訳有りませんでした。 >また、保存はどこに保存する予定なのでしょうか。 ユーザー端末に保存を想定していました。
TsukubaDepot

2020/05/10 03:27

私の質問も曖昧でしたね。 UserDefaultsを使った永続化なのか、それともFirestoreとかRealmなど、外部のライブラリを使う方法なのかという意味でした。
Daisuke0315

2020/05/10 03:35

realmに保存したいと考えてましたがrtfdファイルということになると、どう保存するかも検討がつかなくてそのあたりも含めてヒントを頂ければ、と考えていました。
guest

回答1

0

ベストアンサー

Realm で保存したいということですが、まずは UserDefaults を使った方法で回答します。

UserDefaults で保存できるデータ型には制限がありますから、カスタムクラスを作り一旦Data型に変更しそれを保存します。

下記の記事のうち、後半の回答が参考になるかと思います。

上記の例ではUIColorで保存する例でしたが、同じように NSAttributedString 型のプロパティを作り保存すればいいかと思います。

Realm の経験は浅いため提案にとどまりますが...

たしか Realm も扱えるデータ型には制限があったかと思います。ただ、Data型は扱えると思いますので(参考)、上記の実装を参考に Realm に適用させれば大丈夫ではないでしょうか。

投稿2020/05/10 04:04

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daisuke0315

2020/05/11 04:36

一晩やってみてuserdefaultへ保存することができました! シリアライズ、エンコードに関する知識が全くなかったのでしっかり勉強することで実装することが出来ました。 これからはtextviewでいろいろ組んでいたプログラムをatributedtextにコンバートさせていく作業をしていくことになりそうですが、また大変になりそうです。 また質問させていただくと思いますが今後とも宜しくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問