
前提
クイズアプリを作成しています。
お気に入りに指定した問題を取得後、行数の指定ができません
実現したいこと
- お気に入りの問題数に合わせてセルの行数を指定する
発生している問題・エラーメッセージ
お気に入り問題の配列を作成した後、行数メソッドのカウントに反映できません
該当のソースコード
swift
1import UIKit 2 3class BookmarkViewController: UIViewController,UITableViewDelegate,UITableViewDataSource{ 4 5 var csvArray: [String] = []//CSVを入れる箱 6 var quizArray: [String] = [] 7 var quizCount = 0 8 var mondaiID = "0" 9 var touroku = "0" 10 var tablegyosu = 0 11 var cellArray:[String] = [] 12 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 //print("お気に入りフラグ1\(touroku)") 16 17 18 //csv読み込むブロック 19 csvArray = loadCSV(fileName: "quiz0")//quiz0.csv固定 20 quizArray = csvArray[quizCount].components(separatedBy: ",") 21 //print("クイズカウント\(quizCount)") 22 mondaiID = quizArray[10] 23 let touroku = UserDefaults.standard.string(forKey: mondaiID) 24 // print("お気に入りフラグ2\(touroku!)") 25 // print(quizArray[10]) 26 27 28 if touroku == "1" { 29 cellArray += [quizArray[0]] 30 //print("お気に入りフラグifff\(touroku!)") 31 } else { 32 nextQuiz() 33 } 34 35 }// viewDidLoad終わり 36 37 //次の問題を表示させるブロック 38 func nextQuiz(){ 39 //tablegyosu += 1 40 //print("行数\(tablegyosu)") 41 quizCount += 1 42 print("クイズカウント\(quizCount)")//1 43 44 if quizCount < csvArray.count { 45 quizArray = csvArray[quizCount].components(separatedBy:",") 46 mondaiID = quizArray[10] 47 print(mondaiID) 48 let touroku = UserDefaults.standard.string(forKey: mondaiID) 49 //print(cellArray) 50 if touroku == "1" { 51 cellArray += [quizArray[0]] 52 print(cellArray) 53 //tablegyosu += 1 54 //print("行数\(tablegyosu)") 55 } else { 56 //owari = 1 57 nextQuiz() 58 } 59 } 60 61 } 62 63 //CSV読み込むブロック 64 func loadCSV(fileName: String) -> [String] { 65 let csvBundle = Bundle.main.path(forResource: fileName, ofType:"csv")! 66 do { 67 let csvData = try String(contentsOfFile: csvBundle,encoding: String.Encoding.utf8) 68 let lineCange = csvData.replacingOccurrences(of: "\r",with:"\n") 69 csvArray = lineCange.components(separatedBy:"\n") 70 csvArray.removeLast() 71 } catch { 72 print("エラー") 73 } 74 return csvArray 75 } 76 77 //テーブルの行数を指定するメソッド(必須) 78 func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int { 79 //return tablegyosu 80 return cellArray.count 81 } 82 83 //セルの中身を設定するメソッド(必須) 84 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 85 86 let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell0", for: indexPath) 87 cell.textLabel!.text = quizArray[0]//[indexPath.row] 88 nextQuiz() 89 return cell 90 91 92 } 93 94 95} 96
試したこと
問題数をカウントした変数を指定しても1行しか実装できなかった
問題だけの配列を新たに作成して、カウントしても1行しか実装できなかった
補足情報(FW/ツールのバージョンなど)
storyboardで作成
Xcode13.4.1
問題はcsvから取得

ごめんなさい、コードからアプリの仕様を理解しようとしたのですが、難しいです・・
一度不要な変数を削除して、該当のソースコードを修正していただくことは可能でしょうか?
それからできればnextQuizの再起呼び出しは普通にforを使うことでも実現できそうに思いますので、forを使った形に修正していただくことは可能でしょうか?
そのようなシンプルな形に修正する過程で、ご自身で問題を解決できてしまうこともありますので、面倒かもしれませんが、よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー