別ファイルです。
// // USDocument.swift // ICloudDemo // // Created by Comeluck on 2017/04/26. // Copyright © 2017年 Comeluck. All rights reserved. // import UIKit class USDocument: UIDocument { // Static定数の宣言 struct USFileWrapperKeys { static let IMG = "USDocuemnt.img" static let PLACE = "USDocument.place" static let DATE = "USDocument.date" static let DETAIL = "USDocument.detail" } // 記録したい内容を保持するメンバ変数を宣言します var img:UIImage? var place:String? var date:Date? var detail:String? // 上記、Documentの内容をひとまとめにパッケージするNSFileWrapperもメンバ変数として宣言します var fileWrapper:FileWrapper? // MARK: - 読み出し/書き込み用のメソッド // override func loadFromContents(_ contents: AnyObject, ofType typeName: String, error outError: NSErrorPointer) -> Bool { func load(fromContents contents: Any, ofType typeName: String?) throws -> Bool { // 引数で渡されたcontentsをダウンキャストし、fileWrapperに詰めます // as? はキャストできなかった場合には nilを返します(その場合、if文に入りません) if let fileWrapper = contents as? FileWrapper { self.fileWrapper = fileWrapper let dict = fileWrapper.fileWrappers if let fw = dict?[USFileWrapperKeys.IMG] { self.img = UIImage(data:fw.regularFileContents!) } if let fw = dict?[USFileWrapperKeys.PLACE] { self.place = NSString(data:fw.regularFileContents!, encoding:String.Encoding.utf8.rawValue) as String? } if let fw = dict?[USFileWrapperKeys.DATE] { self.date = NSKeyedUnarchiver.unarchiveObject(with: fw.regularFileContents!) as? NSDate as Date? } if let fw = dict?[USFileWrapperKeys.DETAIL] { self.detail = NSString(data:fw.regularFileContents!, encoding:String.Encoding.utf8.rawValue) as String? } return true } return false } // override func contentsForType(_ typeName: String, error outError: NSErrorPointer) -> AnyObject? { override func contents(forType typeName: String) throws -> Any { if self.fileWrapper == nil { // 空のDictonaryを渡している self.fileWrapper = FileWrapper(directoryWithFileWrappers:[:]) } if let place = self.place , let data = place.data(using: String.Encoding.utf8) { let fw = FileWrapper(regularFileWithContents:data) fw.preferredFilename = USFileWrapperKeys.PLACE self.fileWrapper?.addFileWrapper(fw) } if let img = self.img , let data = UIImageJPEGRepresentation(img, 1.0) { let fw = FileWrapper(regularFileWithContents:data) fw.preferredFilename = USFileWrapperKeys.IMG self.fileWrapper?.addFileWrapper(fw) } if let date = self.date { let data = NSKeyedArchiver.archivedData(withRootObject: date) let fw = FileWrapper(regularFileWithContents:data) fw.preferredFilename = USFileWrapperKeys.DATE self.fileWrapper?.addFileWrapper(fw) } if let detail = self.detail , let data = detail.data(using: String.Encoding.utf8) { let fw = FileWrapper(regularFileWithContents:data) fw.preferredFilename = USFileWrapperKeys.DETAIL self.fileWrapper?.addFileWrapper(fw) } return self.fileWrapper as Any } func updateDocument(_ img:UIImage?,_ place:String?,_ date:Date?,_ detail:String?) { self.img = img self.place = place self.date = date self.detail = detail self.updateChangeCount(.done) } }
宜しくお願い申し上げます
あなたの回答
tips
プレビュー