## 画面遷移するとき、Unexpectedly found nilエラー。
selectedUser
がnil- テキストデータを、Modelに格納して、
ProfileDetailVC
で表示したい。 struct{static let}
以外に有効な方法があれば、教えて頂きたいです。- 他の箇所にエラーはありません。
## エラー
Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
Outlet接続のエラーと考えたのですが、接続は正常な気がします..
間違った箇所があれば、ご指摘ください。
## コード
Model
1 2import UIKit 3 4let URL_BASE = "https://api.github.com/search/repositories?q=" 5var selectedUser = SearchRootVC() 6let repo = selectedUser.repo[selectedUser.RepoToPass] // Unexpectedly found nil while implicitly unwrapping an Optional value 7 8struct Segues { 9 // static let ... 自動的に遅延初期化される(初回アクセスのタイミングでインスタンス生成) 10 static let ToProfileDetail = "Detail" 11} 12 13struct Identifiers { 14 static let RepositoryCell = "Repository" 15} 16 17struct ApiKey { 18 static let Language = "language" 19 static let Stars = "stargazers_count" 20 static let Watchers = "wachers_count" 21 static let Forks = "forks_count" 22 static let Issues = "open_issues_count" 23 static let FullName = "full_name" 24 static let User = "owner" 25 static let imgUrl = "avatar_url" 26} 27 28struct repoTxt { 29 static let language = "Written in (repo["language"] as? String ?? "")" 30 static let stars = "(repo["stargazers_count"] as? Int ?? 0) stars" 31 static let watchers = "(repo["wachers_count"] as? Int ?? 0) watchers" 32 static let forks = "(repo["forks_count"] as? Int ?? 0) forks" 33 static let issues = "(repo["open_issues_count"] as? Int ?? 0) open issues" 34} 35
ProfileDetailVC
1import UIKit 2 3class ProfileDetailVC: UIViewController { 4 5 @IBOutlet weak var ImgView: UIImageView! 6 7 @IBOutlet weak var TitleLbl: UILabel! 8 9 @IBOutlet weak var LanguageLbl: UILabel! 10 11 @IBOutlet weak var StarsLbl: UILabel! 12 @IBOutlet weak var WatchersLbl: UILabel! 13 @IBOutlet weak var ForksLbl: UILabel! 14 @IBOutlet weak var IssuesLbl: UILabel! 15 16 // Var 17 var selectedUser: SearchRootVC! 18 19 override func viewDidLoad() { 20 super.viewDidLoad() 21 setupUI() // Repository型の変数を渡す 22 getProfileImage() 23 } 24 25// func setupUI() { 26// TitleLbl.text = repo[ApiKey.FullName] as? String 27// LanguageLbl.text = repoTxt.language 28// StarsLbl.text = repoTxt.stars 29// WatchersLbl.text = repoTxt.watchers 30// ForksLbl.text = repoTxt.forks 31// IssuesLbl.text = repoTxt.issues 32// } 33 34 func setupUI() { 35 36 let repo = selectedUser.repo[selectedUser.RepoToPass] 37 38 TitleLbl.text = repo[ApiKey.FullName] as? String 39 LanguageLbl.text = repo[repoTxt.language] as? String 40 StarsLbl.text = repo[repoTxt.stars] as? String 41 WatchersLbl.text = repo[repoTxt.watchers] as? String 42 ForksLbl.text = repo[repoTxt.forks] as? String 43 IssuesLbl.text = repo[repoTxt.issues] as? String 44 } 45 46 func getProfileImage() { 47 48 let repo = selectedUser.repo[selectedUser.RepoToPass] 49 50 guard let user = repo[ApiKey.User] as? [String: Any], 51 let imgURL = user[ApiKey.imgUrl] as? String, 52 let url = URL(string: imgURL) 53 else { return } 54 55 let task = URLSession.shared.dataTask(with: url) { (data, response, error) in 56 57 guard error == nil else { 58 debugPrint(error.debugDescription) 59 return 60 } 61 62 guard let data = data else { return } 63 64 let img = UIImage(data: data) 65 DispatchQueue.main.async { 66 self.ImgView.image = img 67 } 68 } 69 task.resume() 70 } 71} 72
質問は以上です。
お時間あるときに、ご返信頂けましたら幸いです????
> var selectedUser: SearchRootVC!
> let repo = selectedUser.repo[selectedUser.RepoToPass]
この二行は連続して記述(つまり、実行)しているのでしょうか。
以下のように、連続して記述はしていませんでした。
連続させてみましたが、同じくエラーが出ました。????♂️
var selectedUser: SearchRootVC!
let URL_BASE = "https://api.github.com/search/repositories?q="
let repo = selectedUser.repo[selectedUser.RepoToPass]
尚、selectedUserがnilなのがエラーの原因なようです。
ソースコードが断片的過ぎて原因がわかりません
全部提示して
追記致しました。
回答1件
あなたの回答
tips
プレビュー