0
私が書いているプログラムでは少し問題があります。これは、トレイル名の.txtファイルを読み込み、TableViewを読み込むためのものです。何らかの理由で、スイッチケース内のdo-catchステートメントが1回ではなく4回実行されています。なぜ誰かが私の理解を助けることができますか? (スウィフトとiOSに新しい。)Swiftの "do-catch"文が4回実行されますか?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch np {
case "Acadia":
let filename = "/Users/michaeltheadley/Desktop/Trailr/Data/National/National_Parks/Acadia/acadia_trails.txt"
do {
let contents = try String(contentsOfFile:filename, encoding: String.Encoding.utf8)
count = contents.components(separatedBy: .newlines).count
print("the situation")
// why is this block being executed x4 ??
let lines : [String] = contents.components(separatedBy: .newlines)
for item in lines {
trails_array.append(item)
print(item)
print(trails_array.count)
}
}
catch _ as NSError {
return 0
}
return count
'numberOfRowsInSection'があなたのをリロードするたびに、各セクションごとに呼び出されている場合のみ4回呼び出され、テーブルビューであなたのnumberOfSectionsを確認してくださいtableView。だからあなたのテーブルビューを複数回読み込んだり、複数のセクションを持っていたりしています。 – Connor
コメントだけです。 'numberOfRowsInSection'や他のtableview/data-sourceデリゲートメソッドの中で複雑な計算をすることはお勧めしません。特にメインキューにあります。このメソッドは軽量な広告が可能で、tableViewがロードされる前にバックグラウンドキューで処理/ディスクアクセスを行う必要があります。 – DanielH