1

get()関数の結果をtableviewに取得しようとしています。この関数の中の結果はHttp投稿から来ます。だから私はnsmutableurlなどを使用しています。私はデータを取得することができますnは、私の出力コンソールで見ることができ、今私のtableviewにしたい。これどうやってするの?Swift:UITableViewを生成する方法

私はこのコードを持っています。データをフェッチすることができました(出力コンソールで見ることができます)、これらのデータをテーブルビューにロードしようとしています。このデータをテーブルの中でどのように渡すことができますか?

func get(){ 

     let request = NSMutableURLRequest(URL: NSURL(string: "http://myurl/somefile.php")!) 
     request.HTTPMethod = "POST" 
     let postString = "id=\(cate_Id)" 
     request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) 
     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 

      guard error == nil && data != nil else {               // check for fundamental networking error 
       print("error=\(error)") 
       return 
      } 

      if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {   // check for http errors 
       print("statusCode should be 200, but is \(httpStatus.statusCode)") 
       print("response = \(response)") 
      } 

      let responseString = String(data: data!, encoding: NSUTF8StringEncoding) 
      print("responseString = \(responseString)") 
     } 
     task.resume() 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     i need the count of the rows here 
    } 



    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     land want to display the data inside each cell 

    } 

答えて

0

HTTPリクエストの結果に関する情報を提供していないため、私はあなたに「一般的な方法で」回答しようとしています。

一般的に、あなたは希望するデータの辞書の配列として応答します。それは簡単にするために:あなたはあなたの応答を取り、注意してください、あなたのHTTP応答ブロック内

let myStringArray: [String] = [] 

を:あなたは文字列を要求しているとしましょう、あなたはこのようにそれをしなければなりません!このコードはあなたのレスポンスツリーに完全に依存します。私はあなたがそれを提供していないので、あなたの答えが何であるか分かりません。それはあなたがそれで何をしたいかに依存し、細胞上

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return myStringArray.count 
} 

 if let JSON = response.result.value { 

      let myString = String((JSON.valueForKey("stringWithinMyResonseTree"))!) 
      myStringArray.append(myString) 

      self.tableView.reloadData() 
     } 

次にあなたが行のあなたの番号を持っています。たとえば、セル内にラベルがあり、その上に文字列の値を表示する場合は、UITableViewCellサブクラスを作成し、それをMyCellと呼んでください。 MyCellではこのようなあなたのラベルのアウトレットを作成します。

class MyCell: UITableViewCell { 

    @IBOutlet weak var myLabel: UILabel! 

を次に、あなたのUITableViewサブクラスを返すと、目的の文字列でラベルを移入する必要があります。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("MyCell") as! MyCell 
     let string = myStringArray[indexPath.row] 
     cell.myLabel.text = string 

     return cell 

} 

は、Interface Builderのプロパティ内のセル識別子を設定することを忘れないでください。

リクエストには、1つのディクショナリの配列が必要ですが、文字列としてキャストします。だからではなく、あなたのget() FUNCのは、次の手順を使用してください:

func download() { 
    let requestURL: NSURL = NSURL(string: "http://myurl/somefile.php")! 
    let urlRequest: NSMutableURLRequest = NSMutableURLRequest(URL: requestURL) 
    let session = NSURLSession.sharedSession() 
    let task = session.dataTaskWithRequest(urlRequest) { 
     (data, response, error) -> Void in 

     let httpResponse = response as! NSHTTPURLResponse 
     let statusCode = httpResponse.statusCode 

     if (statusCode == 200) { 
      print("Everyone is fine, file downloaded successfully.") 

      do{ 

       let json = try NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments) 

       let grouID = String(json.valueForKey("group_id")) 
       let name = String(json.valueForKey("NAME")) 

       print("grouID = \(grouID)") 
       print("name = \(name)") 
       print("debug: this code is executed") 

      }catch { 
       print("Error with Json: \(error)") 
      } 

     } 
    } 

    task.resume() 
} 

あなたの問題をデバッグするには、例外ブレークポイントを作成してください:

enter image description here

関連する問題