回答編集履歴

11

引数追加

2018/04/23 23:44

投稿

退会済みユーザー
test CHANGED
@@ -44,13 +44,13 @@
44
44
 
45
45
  それと、もう少し書き直して良いならば、
46
46
 
47
- コードの再利用がしづらくなるでしょうが、⬇こういうのは動くでしょうか?
47
+ ⬇こういうのは動くでしょうか?
48
48
 
49
49
 
50
50
 
51
51
  ```swift
52
52
 
53
- func readimage() {
53
+ func readimage(imageView: UIImageView) {
54
54
 
55
55
  let documentsURL:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
56
56
 
@@ -64,15 +64,15 @@
64
64
 
65
65
  //imageviewを利用可能にして画像を設定する
66
66
 
67
- imageview.isHidden = false
67
+ imageView.isHidden = false
68
68
 
69
- imageview.image = UIImage(contentsOfFile: fileURL.path)!
69
+ imageView.image = UIImage(contentsOfFile: fileURL.path)!
70
70
 
71
71
  } else {
72
72
 
73
73
  // imageviewを利用不可にする isHiddenで動くか知りたい。
74
74
 
75
- imageview.isHidden = true
75
+ imageView.isHidden = true
76
76
 
77
77
       }
78
78
 
@@ -86,7 +86,7 @@
86
86
 
87
87
  // Do any additional setup after loading the view, typically from a nib.
88
88
 
89
- readimage()
89
+ readimage(imageView: imageview)
90
90
 
91
91
  }
92
92
 

10

インデント訂正

2018/04/23 23:44

投稿

退会済みユーザー
test CHANGED
@@ -62,19 +62,15 @@
62
62
 
63
63
  if FileManager.default.fileExists(atPath: filePath) == true {
64
64
 
65
- // print("ファイルあり")
66
-
67
-        // imageviewを利用可能にして画像を設定する isHiddenより良いプロパティは?
65
+ //imageviewを利用可能にして画像を設定する
68
66
 
69
67
  imageview.isHidden = false
70
68
 
71
-        imageview.image = UIImage(contentsOfFile: fileURL.path)
69
+ imageview.image = UIImage(contentsOfFile: fileURL.path)!
72
70
 
73
71
  } else {
74
72
 
75
- // print("ファイルなし")
76
-
77
-        // imageviewを利用不可にする
73
+ // imageviewを利用不可にする isHiddenで動くか知りたい。
78
74
 
79
75
  imageview.isHidden = true
80
76
 

9

追記

2018/04/23 23:19

投稿

退会済みユーザー
test CHANGED
@@ -39,3 +39,61 @@
39
39
 
40
40
 
41
41
  これで動きますか?
42
+
43
+
44
+
45
+ それと、もう少し書き直して良いならば、
46
+
47
+ コードの再利用がしづらくなるでしょうが、⬇こういうのは動くでしょうか?
48
+
49
+
50
+
51
+ ```swift
52
+
53
+ func readimage() {
54
+
55
+ let documentsURL:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
56
+
57
+ let fileURL:URL = documentsURL.appendingPathComponent("image.png")
58
+
59
+ // URLをパスに変換
60
+
61
+ let filePath = fileURL.path
62
+
63
+ if FileManager.default.fileExists(atPath: filePath) == true {
64
+
65
+ // print("ファイルあり")
66
+
67
+        // imageviewを利用可能にして画像を設定する isHiddenより良いプロパティは?
68
+
69
+ imageview.isHidden = false
70
+
71
+        imageview.image = UIImage(contentsOfFile: fileURL.path)
72
+
73
+ } else {
74
+
75
+ // print("ファイルなし")
76
+
77
+        // imageviewを利用不可にする
78
+
79
+ imageview.isHidden = true
80
+
81
+      }
82
+
83
+ }
84
+
85
+
86
+
87
+ override func viewDidLoad() {
88
+
89
+ super.viewDidLoad()
90
+
91
+ // Do any additional setup after loading the view, typically from a nib.
92
+
93
+ readimage()
94
+
95
+ }
96
+
97
+
98
+
99
+ ```

8

修正

2018/04/23 23:14

投稿

退会済みユーザー
test CHANGED
@@ -1,41 +1,41 @@
1
+ いろいろ考えたのですが、以前質問していたコード⬇には、
2
+
1
- ファイルが存在しない時の戻り値をどうして良いか判断がつかないので、戻り値に?をつけてnilを返しています。
3
+ https://teratail.com/questions/123060
2
4
 
3
5
 
6
+
7
+ viewDidLoad()の中に
8
+
9
+ ```swift
10
+
11
+ if let image:UIImage = readimage(){
12
+
13
+ imageview.image = image
14
+
15
+ }
16
+
17
+ ```
18
+
19
+ とあるのでこれを戻してあげて、回答にあるように関数の戻り値に?をつけるだけでよいのではないかと思いますがどうでしょう?
20
+
21
+ ```swift
22
+
23
+ func readimage() -> UIImage {
24
+
25
+ ```
4
26
 
5
27
  ```swift
6
28
 
7
29
  func readimage() -> UIImage? {
8
30
 
9
- let documentsURL:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
10
-
11
- let fileURL:URL = documentsURL.appendingPathComponent("image.png")
12
-
13
-
14
-
15
- // URLをパスに変換
16
-
17
- let filePath = fileURL.path
18
-
19
- // ファイルが存在しているかを確認して処理を分ける
20
-
21
- if FileManager.default.fileExists(atPath: filePath) == true {
22
-
23
- // print("ファイルあり")
24
-
25
- return UIImage(contentsOfFile: fileURL.path)!
26
-
27
- } else {
28
-
29
- // print("ファイルなし")
30
-
31
- // nilを返してみたけど関数を実行した時に動く?実行時にnilチェックするのかな?
32
-
33
- return nil
34
-
35
- }
36
-
37
- }
38
-
39
31
  ```
40
32
 
41
- これじゃめかな?だめだろうな…
33
+ 上を下の状態にもどしてくさい
34
+
35
+
36
+
37
+ でファイルが存在しない場合の処理をどうするかを if-let文にelse をつけたして記述すれば良いと思います。
38
+
39
+
40
+
41
+ これで動きますか?

7

修正

2018/04/23 17:36

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,41 @@
1
- ~~コピペです~~
1
+ ファイルが存在しない時の戻り値をどうして良いか判断がつかないの、戻り値に?をつけてnilを返しています。
2
2
 
3
- ~~オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない(ファイルが存在する)場合」と「nilだった(ファイルが存在しない)場合」の処理を分岐できます。~~
4
3
 
4
+
5
+ ```swift
6
+
7
+ func readimage() -> UIImage? {
8
+
9
+ let documentsURL:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
10
+
11
+ let fileURL:URL = documentsURL.appendingPathComponent("image.png")
12
+
13
+
14
+
15
+ // URLをパスに変換
16
+
17
+ let filePath = fileURL.path
18
+
19
+ // ファイルが存在しているかを確認して処理を分ける
20
+
21
+ if FileManager.default.fileExists(atPath: filePath) == true {
22
+
23
+ // print("ファイルあり")
24
+
25
+ return UIImage(contentsOfFile: fileURL.path)!
26
+
27
+ } else {
28
+
29
+ // print("ファイルなし")
30
+
31
+ // nilを返してみたけど関数を実行した時に動く?実行時にnilチェックするのかな?
32
+
5
- すいません間違えました。
33
+ return nil
34
+
35
+ }
36
+
37
+ }
38
+
39
+ ```
40
+
41
+ これじゃだめかな?だめだろうな…。

6

修正

2018/04/23 16:58

投稿

退会済みユーザー
test CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  ~~オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない(ファイルが存在する)場合」と「nilだった(ファイルが存在しない)場合」の処理を分岐できます。~~
4
4
 
5
- すいません間違えました。nilチェックというより、ファイルの存在確認ですね。
5
+ すいません間違えました。

5

訂正

2018/04/23 16:18

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,5 @@
1
- コピペですが。
1
+ ~~コピペですが。~~
2
2
 
3
+ ~~オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない(ファイルが存在する)場合」と「nilだった(ファイルが存在しない)場合」の処理を分岐できます。~~
3
4
 
4
-
5
- オプショナルバインディング(Optional-Binding)という記述方法を使うと「変数がnilでない(ファイル存在する)場合」と「nilだった(ファイルが存在しない)場合」の処理を分岐きます。
5
+ すいません間違えました。nilチェックというより、ファイル存在確認です

4

修正

2018/04/23 15:54

投稿

退会済みユーザー
test CHANGED
@@ -3,19 +3,3 @@
3
3
 
4
4
 
5
5
  オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない(ファイルが存在する)場合」と「nilだった(ファイルが存在しない)場合」の処理を分岐できます。
6
-
7
-
8
-
9
- ```swift
10
-
11
- if let fileURL:URL = documentsURL.appendingPathComponent("image.png") {
12
-
13
- return UIImage(contentsOfFile: fileURL.path)!
14
-
15
- } else {
16
-
17
- //print("フィアルが存在しません")
18
-
19
- }
20
-
21
- ```

3

修正

2018/04/23 15:40

投稿

退会済みユーザー
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない場合」と「nilだった場合」の処理を分岐できます。
5
+ オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない(ファイルが存在する)場合」と「nilだった(ファイルが存在しない)場合」の処理を分岐できます。
6
6
 
7
7
 
8
8
 

2

質問箇所を取り違えたので回答を訂正します。

2018/04/23 14:59

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,6 @@
1
1
  コピペですが。
2
+
3
+
2
4
 
3
5
  オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない場合」と「nilだった場合」の処理を分岐できます。
4
6
 
@@ -6,24 +8,14 @@
6
8
 
7
9
  ```swift
8
10
 
9
- guard fileURL:URL = documentsURL.appendingPathComponent("image.png") else {
11
+ if let fileURL:URL = documentsURL.appendingPathComponent("image.png") {
10
12
 
11
- print("ファイルが存在しません。")
13
+ return UIImage(contentsOfFile: fileURL.path)!
12
14
 
13
-    return
15
+ } else {
14
16
 
15
- }
17
+ //print("フィアルが存在しません")
16
18
 
17
-  do{
18
-
19
- try pngImageData.write(to: fileURL)
20
-
21
- }catch{
22
-
23
- print("書き込み失敗")
24
-
25
- }
19
+ }
26
-
27
-
28
20
 
29
21
  ```

1

編集

2018/04/23 14:48

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
1
  コピペですが。
2
2
 
3
- オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数valueがnilでない場合」と「nilだった場合」の処理を分岐できます。
3
+ オプショナルバインディング(Optional-Binding)という記述方法を使うと、「変数がnilでない場合」と「nilだった場合」の処理を分岐できます。
4
4
 
5
5
 
6
6