2017年1月19日木曜日
webから取得したデータをtableViewに表示
//
// ViewController.swift
//
//
import UIKit
class ViewController: UIViewController ,UITableViewDataSource{
// リスト
var dataList : [(id:String, name:String)] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// データを取得する
getUriData()
tableView.dataSource = self // 追加
}
@IBOutlet weak var tableView: UITableView!
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// データソースメソッドを追加
func tableView(tableView:UITableView, numberOfRowsInSection sectioin: Int)-> Int{
return dataList.count
}
// Cellに値を設定する
func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("listCell", forIndexPath: indexPath)
cell.textLabel!.text = rosenList[indexPath.row].name
return cell
}
// データを取得する
func getUriData(){
let urlString = "uri"
let url = NSURL(string: urlString)
//download by NSSession
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler:{data, response, error in
//convert json data to dictionary
var dict:NSDictionary
do {
// 余計な"()"を排除する為に、NSData -> NSString(カッコ排除) -> NSData とする
var out = NSString(data:data!, encoding:NSUTF8StringEncoding)
print(out)
out = out?.stringByReplacingOccurrencesOfString("(", withString: "")
out = out?.stringByReplacingOccurrencesOfString(")", withString: "")
print(out)
let data2 = out!.dataUsingEncoding(NSUTF8StringEncoding)
dict = try NSJSONSerialization.JSONObjectWithData(data2!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
// JSONでdictionaryとして取得
let rosenDatas = dict["list"] as! NSArray
var titles:String = ""
for entry in rosenDatas {
let id:String = entry["id"] as! String
titles += id + "/"
let name = entry["name"] as! String
titles += name + " "
let data = (id:id, name:name)
self.dataList.append(data)
}
// UIスレッドに出力する場合
/*
dispatch_async(dispatch_get_main_queue()){
// self.jsonTextView.text = titles
}
*/
self.tableView.reloadData() // UIを更新
} catch {
print("error")
return
}
// print(dict)
})
task.resume()
}
}
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿