## Model内の、initの引数
VCにて、コンパクトにテキストを表示するため、
Modelを使用したいです。
その際、下記コードでエラーが発生してしまい、対処法を伺いたいです。
引数の指定が原因な気がするのですが、
下記の場合、Model内のinit
の引数はどのようにすべきでしょうか?
## コード
Model
1import Foundation 2 3struct Repository { 4 5 let repo = selectedUser.repo[selectedUser.RepoToPass] 6 7 var language: String 8 var stars: String 9 var watchers: String 10 var folks: String 11 var issues: String 12 13 init() { // Editor placeholder in source file 14 self.language = "Written in (repo[ApiKey.Language] as? String ?? "")" 15 self.stars = "(repo[ApiKey.Stars] as? Int ?? 0) stars" 16 self.watchers = "(repo[ApiKey.Watchers] as? Int ?? 0) watchers" 17 self.folks = "(repo[ApiKey.Forks] as? Int ?? 0) forks" 18 self.issues = "(repo[ApiKey.Issues] as? Int ?? 0) open issues" 19 } 20 21}
Swift
1 2// ViewController 3 4 override func viewDidLoad() { 5 super.viewDidLoad() 6 setupUI(repo: repo) // Cannot convert value of type '[String : Any]' to expected argument type 'Repository' 7 } 8 9 func setupUI(repo: Repository) { 10 11 LanguageLbl.text = repo.language 12 StarsLbl.text = repo.stars 13 WatchersLbl.text = repo.watchers 14 ForksLbl.text = repo.folks 15 IssuesLbl.text = repo.issues 16 }
エラー
// Model Editor placeholder in source file
// VC Cannot convert value of type '[String : Any]' to expected argument type 'Repository'
## 追記
以下のコードをクリーンアップしたいです。
"Written in (repo["language"] as? String ?? "")"
以下5つのテキストデータを
モデル(別ファイル)に記述し、VCにて呼び出したいと考えています。
VC
1 LanguageLbl.text = "Written in (repo["language"] as? String ?? "")" 2 StarsLbl.text = "(repo["stargazers_count"] as? Int ?? 0) stars" 3 WatchersLbl.text = "(repo["wachers_count"] as? Int ?? 0) watchers" 4 ForksLbl.text = "(repo["forks_count"] as? Int ?? 0) forks" 5 IssuesLbl.text = "(repo["open_issues_count"] as? Int ?? 0) open issues"
こんな感じです。
VC
1// LanguageLbl.text = repo.language 2// StarsLbl.text = repo.stars 3// WatchersLbl.text = repo.watchers 4// ForksLbl.text = repo.folks 5// IssuesLbl.text = repo.issues
もしくは、init
を使用せず以下のようにstatic let
の使用も考えたのですが、
テキストデータのモデル格納に適切な方法は何でしょうか?
model
1struct Identifiers { 2 static let Language = "Written in (repo["language"] as? String ?? "")" 3}
追記2 (現在状況)
Model
1var selectedUser: SearchRootVC! 2// 以下letにて、エラー 3let repo = selectedUser.repo[selectedUser.RepoToPass] // Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value 4 5... 6 7struct repoTxt { 8 static let language = "Written in (repo["language"] as? String ?? "")" 9 static let stars = "(repo["stargazers_count"] as? Int ?? 0) stars" 10 static let watchers = "(repo["wachers_count"] as? Int ?? 0) watchers" 11 static let forks = "(repo["forks_count"] as? Int ?? 0) forks" 12 static let issues = "(repo["open_issues_count"] as? Int ?? 0) open issues" 13}
VC
1 func setupUI() { 2 LanguageLbl.text = repoTxt.language 3 StarsLbl.text = repoTxt.stars 4 WatchersLbl.text = repoTxt.watchers 5 ForksLbl.text = repoTxt.forks 6 IssuesLbl.text = repoTxt.issues 7 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/09 07:44
2020/09/09 07:51
2020/09/09 08:17
2020/09/09 08:18
2020/09/09 08:22
2020/09/09 08:37 編集
2020/09/09 08:45
2020/09/09 08:57
2020/09/09 23:31