回答編集履歴

3

誤記を修正

2017/05/05 08:42

投稿

acevif
acevif

スコア59

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- それより、`doc.save` の行で症状が出ているのは、`doc` や `localFileURL` が `nil` じゃない状態で渡っていることが原因です。
17
+ それより、`doc.save` の行で症状が出ているのは、`doc` や `localFileURL` が `nil` である状態で渡っていることが原因です。
18
18
 
19
19
  原因をたどっていくために、`localFileUrl`を初期化しているあたりを、以下のように修正してデバッグしてみてください。
20
20
 

2

追記2

2017/05/05 08:42

投稿

acevif
acevif

スコア59

test CHANGED
@@ -14,11 +14,11 @@
14
14
 
15
15
 
16
16
 
17
- それより、`doc.save` の行で症状が出ているのは、`doc` や `localFileURL` が nil じゃない状態で渡っていることが原因です。
17
+ それより、`doc.save` の行で症状が出ているのは、`doc` や `localFileURL` が `nil` じゃない状態で渡っていることが原因です。
18
18
 
19
19
  原因をたどっていくために、`localFileUrl`を初期化しているあたりを、以下のように修正してデバッグしてみてください。
20
20
 
21
- もし nil になっているとすれば、`localFilePath` などの変数に入っている値は、想定したとおりか確認してみてください。
21
+ もし `nil` になっているとすれば、`localFilePath` などの変数に入っている値は、想定したとおりか確認してみてください。
22
22
 
23
23
 
24
24
 
@@ -41,3 +41,23 @@
41
41
  }
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ **追記2**
48
+
49
+ `func createDocument(_ fileUrl: URL?) {`
50
+
51
+ この関数では`fileUrl`を引数として受け取っていますが、関数の中では使っていないようですね。
52
+
53
+ この矛盾がバグを引き起こしているかもしれません。
54
+
55
+
56
+
57
+ もし、この引数の値を使わないなら、この引数を受け取らないような関数を修正してください。
58
+
59
+
60
+
61
+ もし、この引数の値を使うなら、`URL?`型はOptionalなので、この時点で`nil`が入っている可能性があります。
62
+
63
+ `nil`が入ることを防ぐため、`(_ fileUrl: URL)`のようにOptionalでない型に修正してください。

1

printを使ったデバッグのすすめ

2017/05/05 08:39

投稿

acevif
acevif

スコア59

test CHANGED
@@ -1,3 +1,43 @@
1
1
  `localFileUrl`が`nil`であったりしませんか?
2
2
 
3
3
  `URL(fileURLWithPath : なんとかかんとか)`が何を返しているか調べてみてください。
4
+
5
+
6
+
7
+
8
+
9
+ **追記1**
10
+
11
+ 後から値を変更しないのなら、`let`と`var`に大差はないはずです。
12
+
13
+ `var`は後から変更する変数という意味です。`let`は変更しない変数という意味です。
14
+
15
+
16
+
17
+ それより、`doc.save` の行で症状が出ているのは、`doc` や `localFileURL` が nil じゃない状態で渡っていることが原因です。
18
+
19
+ 原因をたどっていくために、`localFileUrl`を初期化しているあたりを、以下のように修正してデバッグしてみてください。
20
+
21
+ もし nil になっているとすれば、`localFilePath` などの変数に入っている値は、想定したとおりか確認してみてください。
22
+
23
+
24
+
25
+ ```Swift
26
+
27
+ let localFileUrl = URL(fileURLWithPath : localFilePath)
28
+
29
+ if localFileUrl == nil {
30
+
31
+ print("Error!", "localFileUrl was nil.", "localFilePath:", localFilePath)
32
+
33
+ }
34
+
35
+ let doc = USDocument(fileURL : localFileUrl)!
36
+
37
+ if doc == nil {
38
+
39
+ print("Error!", "doc was nil.", "localFileUrl:", localFileUrl)
40
+
41
+ }
42
+
43
+ ```