Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。336件01SecondViewControllerで配列にUIImageを保存したいです。SecondViewControllerで写真を配列[imageFile]に保存します。}次にFirstViewControllerで保存したものを受け取りたいのですがSecondViewControllerのsaveボタンを押したらエラーが出ます。他のプログラムでも同じことをしましたができませんでした。文字の配列では、できました。NSUserDefaultsが扱えるのは「plist互換」と呼ばれるデータ型だけです。小規模のデータを扱うために作られたもので、画像のような巨大なデータを保存するのには向いていません。向いていなくても、とりあえずできるならそれで良いじゃないかと言う人もおられるでしょうが、私としてはお勧めできないです。7:19ありがとうございます。7:47「UIImage配列を保存」と言うことですが、あなたのコード例を見る限り、保存するのは「SecondViewControllerからFirstViewControllerにデータを受け渡すのだけが目的」のように見えます。(そのような一時的なデータの受け渡し場所にNSUserDefaultsを使うのも考えものですが...)「単にViewController間でのデータの受け渡し」ができれば良いのでしょうか、それとも永続化が必要なのでしょうか。8:48遅くなりました、データの受け渡しのやり方が分からずに、NSUserDefaultsを使っていましたので、データの受け渡し方を教えて欲しいです。11:33了解しました。コメントではまとまったコードを書きにくいので、質問タイトルから外れてしまいますが、回答の方に書かせていただきます。票2(調子に乗ってまた長文になってしまいました。後半のコード例の付近まではさっと読み飛ばして、後で興味と必要に応じて読み直してください。)まず、一番簡単なのは、グローバル変数を使う方法でしょう。[UIImage]()と言う変数宣言がありますが、これはどのclassにも所属していないので、グローバル変数と通称されるものになります。(Swiftの場合には、「トップレベルプロパティ」なんて言い方もありますが、「トップレベル」と言うのは、どのクラスにも所属していないことを表していると思ってください。)グローバル変数はprivateなどの修飾がない限り、同じプロジェクト内のどのファイルのどこからでも(別の同名変数に隠されていない限り)アクセスできます。インスタンスプロパティなどと違い、そのプロパティを現在持っているインスタンスはどれか、なんてことに気を使う必要もありません。SecondViewControllerからアクセスしているimageFileは、このグローバル変数のようですから、FirstViewControllerからもそいつにアクセスしてやるだけで良いということになります。現在のFirstViewController内のimageFileもそのグローバル変数を参照しているだけのようですので、何も付け足す必要はないですね。FirstViewControllerの両方から、NSUserDefaultsが出てくる部分をそのまま削除してやってください。FirstViewControllerに戻って、load(_:)に結びつけたボタンを押せば、更新内容が反映されているがわかると思います。私的には練習用やサンプルコードと割り切った「絶対に将来大規模化しないアプリ」でグローバル変数を使うのは有りなのですが、やはりアプリをいじっていると「やはり端末に保存できるようにしたい」「クラウドにも保存できると嬉しい」「サムネイルも表示できるようにしたい」「すぐメモリ落ちするのでメモリを節約したい」...と言ったいろいろな要求が出てくるものです。グローバル変数は、そのお手軽さゆえ、放置するとあちらこちらで無制限に使われてしまい、いろいろな要求に対応する場合の修正点がどんどん膨らんでいってしまいます。今回のように画面間の遷移に限ったデータの受け渡しの場合には、セグエやdelegateパターンなどを使えば解決できることも多いのですが、今回は「溜め込んだ画像データがこのアプリの根幹」であると仮定して、専用のモデルマネージャクラスを設ける例を挙げておきます。こんな内容のMyImageManagerクラスを作成します。//...}メソッドやなんかは必要に応じて増やしていけば良いんですが、その時に中身のimageFileと言ったものには、できるだけ直接触われないようにしておくのが、将来拡張しやすくするためのコツです。SecondViewControllerの方では、save(_:)メソッドをこんな感じに修正します。}}次にFirstViewControllerの方では、load(_:)メソッドをこんな風に書くことになります。String(manager.imageCount)}実用アプリにするには、MyImageManagerの機能はまだまだ足りないでしょうが、雰囲気だけは掴んでください。「やっぱり端末にデータを保存できるようにしたい」と思ったら、saveInDevice()なんてメソッドを追加することになるでしょうし、「クラウドにも」と思ったら、saveInCloud()メソッドも作ることになるかもしれません。実際のアプリの機能拡張はそう綺麗にはいかないものですが、無制限にグローバル変数を使うよりはすっきりさせることができるはずです。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。変換についての疑問1NSUserDefaultsで保存した小数をツイートする方法1storyboardの遷移でエラーが出ます。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。