2017-11-02 9 views
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 
+0

'numberOfRowsInSection'があなたのをリロードするたびに、各セクションごとに呼び出されている場合のみ4回呼び出され、テーブルビューであなたのnumberOfSectionsを確認してくださいtableView。だからあなたのテーブルビューを複数回読み込んだり、複数のセクションを持っていたりしています。 – Connor

+0

コメントだけです。 'numberOfRowsInSection'や他のtableview/data-sourceデリゲートメソッドの中で複雑な計算をすることはお勧めしません。特にメインキューにあります。このメソッドは軽量な広告が可能で、tableViewがロードされる前にバックグラウンドキューで処理/ディスクアクセスを行う必要があります。 – DanielH

答えて

1

numberrowsはあなたが4つのセクション

関連する問題