質問するログイン新規登録

質問編集履歴

3

a

2020/09/10 03:02

投稿

kazuki_user
kazuki_user

スコア147

title CHANGED
File without changes
body CHANGED
@@ -23,10 +23,32 @@
23
23
 
24
24
  ```Model
25
25
 
26
- var selectedUser: SearchRootVC!
27
- // 以下letでエラー。
26
+ import UIKit
28
- let repo = selectedUser.repo[selectedUser.RepoToPass] // Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
29
27
 
28
+ let URL_BASE = "https://api.github.com/search/repositories?q="
29
+ var selectedUser = SearchRootVC()
30
+ let repo = selectedUser.repo[selectedUser.RepoToPass] // Unexpectedly found nil while implicitly unwrapping an Optional value
31
+
32
+ struct Segues {
33
+ // static let ... 自動的に遅延初期化される(初回アクセスのタイミングでインスタンス生成)
34
+ static let ToProfileDetail = "Detail"
35
+ }
36
+
37
+ struct Identifiers {
38
+ static let RepositoryCell = "Repository"
39
+ }
40
+
41
+ struct ApiKey {
42
+ static let Language = "language"
43
+ static let Stars = "stargazers_count"
44
+ static let Watchers = "wachers_count"
45
+ static let Forks = "forks_count"
46
+ static let Issues = "open_issues_count"
47
+ static let FullName = "full_name"
48
+ static let User = "owner"
49
+ static let imgUrl = "avatar_url"
50
+ }
51
+
30
52
  struct repoTxt {
31
53
  static let language = "Written in (repo["language"] as? String ?? "")"
32
54
  static let stars = "(repo["stargazers_count"] as? Int ?? 0) stars"
@@ -34,16 +56,82 @@
34
56
  static let forks = "(repo["forks_count"] as? Int ?? 0) forks"
35
57
  static let issues = "(repo["open_issues_count"] as? Int ?? 0) open issues"
36
58
  }
59
+
37
60
  ```
38
61
 
39
62
  ```ProfileDetailVC
63
+ import UIKit
64
+
65
+ class ProfileDetailVC: UIViewController {
66
+
67
+ @IBOutlet weak var ImgView: UIImageView!
68
+
69
+ @IBOutlet weak var TitleLbl: UILabel!
70
+
71
+ @IBOutlet weak var LanguageLbl: UILabel!
72
+
73
+ @IBOutlet weak var StarsLbl: UILabel!
74
+ @IBOutlet weak var WatchersLbl: UILabel!
75
+ @IBOutlet weak var ForksLbl: UILabel!
76
+ @IBOutlet weak var IssuesLbl: UILabel!
77
+
78
+ // Var
79
+ var selectedUser: SearchRootVC!
80
+
81
+ override func viewDidLoad() {
82
+ super.viewDidLoad()
83
+ setupUI() // Repository型の変数を渡す
84
+ getProfileImage()
85
+ }
86
+
87
+ // func setupUI() {
88
+ // TitleLbl.text = repo[ApiKey.FullName] as? String
89
+ // LanguageLbl.text = repoTxt.language
90
+ // StarsLbl.text = repoTxt.stars
91
+ // WatchersLbl.text = repoTxt.watchers
92
+ // ForksLbl.text = repoTxt.forks
93
+ // IssuesLbl.text = repoTxt.issues
94
+ // }
95
+
40
96
  func setupUI() {
97
+
98
+ let repo = selectedUser.repo[selectedUser.RepoToPass]
99
+
100
+ TitleLbl.text = repo[ApiKey.FullName] as? String
41
101
  LanguageLbl.text = repo[repoTxt.language] as? String
42
102
  StarsLbl.text = repo[repoTxt.stars] as? String
43
103
  WatchersLbl.text = repo[repoTxt.watchers] as? String
44
104
  ForksLbl.text = repo[repoTxt.forks] as? String
45
105
  IssuesLbl.text = repo[repoTxt.issues] as? String
46
106
  }
107
+
108
+ func getProfileImage() {
109
+
110
+ let repo = selectedUser.repo[selectedUser.RepoToPass]
111
+
112
+ guard let user = repo[ApiKey.User] as? [String: Any],
113
+ let imgURL = user[ApiKey.imgUrl] as? String,
114
+ let url = URL(string: imgURL)
115
+ else { return }
116
+
117
+ let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
118
+
119
+ guard error == nil else {
120
+ debugPrint(error.debugDescription)
121
+ return
122
+ }
123
+
124
+ guard let data = data else { return }
125
+
126
+ let img = UIImage(data: data)
127
+ DispatchQueue.main.async {
128
+ self.ImgView.image = img
129
+ }
130
+ }
131
+ task.resume()
132
+ }
133
+ }
134
+
47
135
  ```
48
136
 
49
137
 

2

a

2020/09/10 03:02

投稿

kazuki_user
kazuki_user

スコア147

title CHANGED
File without changes
body CHANGED
@@ -38,11 +38,11 @@
38
38
 
39
39
  ```ProfileDetailVC
40
40
  func setupUI() {
41
- LanguageLbl.text = repoTxt.language
41
+ LanguageLbl.text = repo[repoTxt.language] as? String
42
- StarsLbl.text = repoTxt.stars
42
+ StarsLbl.text = repo[repoTxt.stars] as? String
43
- WatchersLbl.text = repoTxt.watchers
43
+ WatchersLbl.text = repo[repoTxt.watchers] as? String
44
- ForksLbl.text = repoTxt.forks
44
+ ForksLbl.text = repo[repoTxt.forks] as? String
45
- IssuesLbl.text = repoTxt.issues
45
+ IssuesLbl.text = repo[repoTxt.issues] as? String
46
46
  }
47
47
  ```
48
48
 

1

a

2020/09/10 02:47

投稿

kazuki_user
kazuki_user

スコア147

title CHANGED
@@ -1,1 +1,1 @@
1
- 画面遷移するとき、Unexpectedly found nilエラー
1
+ selectedUserがnilで、Unexpectedly found nilエラー
body CHANGED
@@ -1,5 +1,6 @@
1
1
  ## 画面遷移するとき、Unexpectedly found nilエラー。
2
2
 
3
+ - `selectedUser`が**nil**
3
4
  - テキストデータを、Modelに格納して、`ProfileDetailVC`で表示したい。
4
5
  - `struct{static let}`以外に有効な方法があれば、教えて頂きたいです。
5
6
  - 他の箇所にエラーはありません。