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

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

新規登録して質問してみよう
ただいま回答率
85.50%
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

0回答

1030閲覧

swift3 "fatal error: unexpectedly found nil while unwrapping an Optional value"が出る2

harima

総合スコア17

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クリップ

投稿2017/05/03 05:21

別ファイルです。

// // 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) } }

宜しくお願い申し上げます

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

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

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

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

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

acevif

2017/05/04 09:56

質問は1つにまとめてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問