教えてください!
struct Data { var Count: Int = 0 var PointA: CGPoint = .zero var PointB: CGPoint = .zero var PointC: CGPoint = .zero var Flag: Bool = false }
という構造体があって、これを array という二次元配列に入れています。
array=[[Data]]()
この二次元配列を、最終的には、他の変数と一緒に fileWrapper に詰めて、ひとまとまりのファイルにして書き出したいと思っています。
その際には、この array を Data型(NSData型?)に変換する必要があると思うのですが、その方法が分かりません。
いまは、まず、array を生成したクラス A に下記のコードを書いています。
document.array = array as? NSMutableArray
上記の document は USDocument: UIDocument というクラスを作って、それをインスタンス化したものです。
上記コードは、document 内のメンバー変数 array に、このクラス A で生成した array を渡そうとしているものです。
それを受けて、USDocument クラスでは、渡された array を DATA というキーでアーカイブして fileWrapper に詰めるという処理を書いています。
override func contents(forType typeName: String) throws -> Any { if self.fileWrapper == nil { // 空のDictonaryを渡している self.fileWrapper = FileWrapper(directoryWithFileWrappers:[:]) } if let array = self.array { let data = NSKeyedArchiver.archivedData(withRootObject: array) let fw = FileWrapper(regularFileWithContents: data) fw.preferredFilename = USFileWrapperKeys.DATA self.fileWrapper?.addFileWrapper(fw) } //他の変数を変換して fileWrapper に詰める処理 return self.fileWrapper as Any } }
こんな質問の仕方で適切な回答が得られるのかどうかも自信がないのですが、どうすれば構造体の二次元配列を fileWrapper の一要素として詰めることができるのか、教えてください。
「もっとこういう情報が必要だ」というのがあればお申し付けください。
※上記データ変換を簡単に検証する方法としては、userDefault に保存(=Data型あるいはNSData型に変換)して、それを読み込む(=[Data]の形に復元する)というのを試してみるのがいいのでしょうか?
なにぶん Data型と NSData型の違いもよく分からない初心者なのですが、教えてください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー