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

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

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

1666閲覧

NSData型について

ruuuu

総合スコア174

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2019/12/30 09:39

Swiftの学習をしていたのですが型について疑問な点があり、質問させて貰いました。
具体的にはこちらのコードの以下の部分になります。

let defaults = UserDefaults.standard var saveArray: Array! = [NSData]() var image: UIImage! func sendSaveImage() { //NSData型にキャスト let data = image.pngData() as NSData? if let imageData = data { saveArray.append(imageData) defaults.set(saveArray, forKey: "saveImage") defaults.synchronize() } } func defaultsArray() { //UserDefaultsの中身が空でないことを確認 if defaults.object(forKey: "saveImage") != nil { let objects = defaults.object(forKey: "saveImage") as? NSArray //配列としてUserDefaultsに保存した時の値と処理後の値が変わってしまうのでremoveAll() saveArray.removeAll() for data in objects! { saveArray.append(data as! NSData) } } tableView.reloadData() }

正直に申しまして、疑問点は多々あるのですが、まず何故let data = image.pngData() as NSData?ここの部分でNSData型へ変換するのかが分からないです。
どなたか、お詳しい方いらっしゃいましたら教えて頂けましたら幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

UserDefaultsへ保存できるようにするためではないでしょうか。

Xcode - Documentation - UserDefaults

A default object must be a property list—that is, an instance of (or for collections, a combination of instances of) NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary. If you want to store any other type of object, you should typically archive it to create an instance of NSData.
(Google翻訳)
デフォルトオブジェクトは、プロパティリスト、つまり、NSData、NSString、NSNumber、NSDate、NSArray、またはNSDictionaryのインスタンス(またはコレクションの場合はインスタンスの組み合わせ)でなければなりません。 他のタイプのオブジェクトを保存する場合、通常はNSDataのインスタンスを作成するためにアーカイブする必要があります。

投稿2019/12/30 10:17

dsuzuki

総合スコア1682

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

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

ruuuu

2019/12/30 10:50

ご回答ありがとうございます... ずっと疑問だったのですが、image画像を何故UserDefaultsに保存する際に「Data」型に変換するのかというのは、仕様として定められたものだったのですね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問