xcode 6.3.1
AFNetworing 2.6.3
ターゲットios 8.3
iosでweb上のjsonデータを取ってきて表示するアプリを作っています。
こちらを参考にしました。が、幾つかのエラーが出てしまいました。
http://blog.livedoor.jp/sy40/archives/45087401.html
今は以下のコードの各ブロックの2行目で
could not find member 'img'
could not find member 'name'
could not find member 'description'
と出てしまっています。
//画像の表示 var imageView = cell.viewWithTag(1) as! UIImageView! let imgUrl = NSURL(string: self.items[indexPath.row].img); var err: NSError?; var imageData :NSData = NSData(contentsOfURL: imgUrl!,options:NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!; var img = UIImage(data:imageData); imageView.image = img //タイトルの表示 let label = cell.viewWithTag(2) as! UILabel label.text = self.items[indexPath.row].name //説明文の表示 let description = cell.viewWithTag(3) as! UILabel description.text = self.items[indexPath.row].description
この部分が間違っているのか、それともそれ以前の部分が間違っていることで配列から取り出すことができなくなっているのかどちらか分かりません。以下に全体のview controllerのコードも載せますので、もしなにか解決方法や間違いの指摘など頂けましたら幸いです。
import UIKit
//structを使用して、jsonデータを整形
struct Items {
var name:String
var description:String
var img:String
}
class ViewController: UIViewController , UITableViewDelegate, UITableViewDataSource {
//Table Viewをsegueで @IBOutlet weak var tableView: UITableView! //jsonデータをいれる変数。 var items:[Any] = [] //required init required init(coder aDecoder: NSCoder) { self.items = [] super.init(coder: aDecoder) } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.tableView.delegate = self self.tableView.dataSource = self //空の場合separatorを消す var v:UIView = UIView(frame: CGRectZero) v.backgroundColor = UIColor.clearColor() self.tableView.tableFooterView = v self.tableView.tableHeaderView = v //jsonデータ取得 requestApi() } //jsonデータ取得 func requestApi() { let manager = AFHTTPSessionManager() let url = "http://localhost/afdb.php" manager.GET(url, parameters: nil, success: { (operation, json) -> Void in let dict = json as! NSArray for arr in dict { //structで整形 var arrData = Items(name: arr["name"] as! String, description: arr["description"] as! String, img: arr["img"] as! String) //配列に追加 self.items.append(arrData) } //tableViewをリロード self.tableView.reloadData() }, failure: { (operation, error) -> Void in // エラー println(error) }) } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { //配列の個数 return self.items.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("tableCell") as! UITableViewCell if self.items.count == 0 { return cell } //画像の表示 var imageView = cell.viewWithTag(1) as! UIImageView! let imgUrl = NSURL(string: self.items[indexPath.row].img); var err: NSError?; var imageData :NSData = NSData(contentsOfURL: imgUrl!,options:NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!; var img = UIImage(data:imageData); imageView.image = img //タイトルの表示 let label = cell.viewWithTag(2) as! UILabel label.text = self.items[indexPath.row].name //説明文の表示 let description = cell.viewWithTag(3) as! UILabel description.text = self.items[indexPath.row].description return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/14 07:56
2015/11/14 08:02
2015/11/14 08:33