2016-10-24 5 views
-1

アプリのHomeFeedを取得しようとしています。
JSONデータを取得してtableViewCellに表示することは難しく、特にJSON Array/Dictionaryを変換して使用することが難しいです。
どんな種類の助けでも大変感謝して命を救うでしょう!Alamofire 4.0でJSON辞書/配列を取得してtableViewに表示する方法

は、ここに私のHomeFeedTableViewクラスです:

class HomeFeedTableView: UIViewController { 


@IBOutlet weak var menuButton: UIBarButtonItem! 
@IBOutlet weak var cameraBtn: UIButton! 
var tableView = UITableView() 


var tableAuthor = [String]() 
var tableTitle = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    //cameraBtn possition 
    cameraBtn.layer.zPosition = 1000 

    if self.revealViewController() != nil { 
     menuButton.target = self.revealViewController() 
     menuButton.action = #selector(SWRevealViewController.revealToggle(_:)) 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 

    getJSON() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


// Get JSON 
func getJSON(){ 

    let getEndPoint: String = "http://myURL/api/get_user_post/" 
    Alamofire.request(getEndPoint) 
     .responseJSON { response in 

      guard response.result.error == nil else { 
       // got an error in getting the data, need to handle it 
       print("error calling GET") 
       print(response.result.error!) 
       return 
      } 

      if let value = response.result.value { 

       let json = JSON(value) 
       //print(json.description) 

       for items in json.dictionary! { 

        //let author: String? = anItem["author"].stringValue 
        //let title: String? = anItem["title"].stringValue 
        //self.tableAuthor.append(author!) 
        //self.tableTitle.append(title!) 

        print(items) 

       } 



       DispatchQueue.main.async { 
        self.tableView.reloadData() 
       } 
      } 
    } 

} 

// MARK: - Table view data source 

func numberOfSectionsInTableView(_ tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 1 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    return status.count 
} 


func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell { 
    // Configure the cell... 

    let cell: HomeFeedTableViewCell = tableView.dequeueReusableCell(withIdentifier: "HomeCell") as! HomeFeedTableViewCell 
    let img = UIImage(named: imageMain[(indexPath as NSIndexPath).row]) 
    cell.ImageMain.image = img 
    // cell.statusMain.text = tableAuthor[indexPath.row] 

    let proImg = UIImage(named: imageMain[(indexPath as NSIndexPath).row]) 
    cell.profileImage.image = proImg 
    cell.profileImage.layer.cornerRadius = 20.00 
    cell.profileImage.clipsToBounds = true 

    cell.likeBtn.layer.borderWidth = 1.2 
    cell.likeBtn.layer.borderColor = UIColor.gray.cgColor 
    cell.likeBtn.layer.cornerRadius = 5 
    cell.likeBtn.clipsToBounds = true 

    cell.commentBtn.layer.borderWidth = 1.2 
    cell.commentBtn.layer.borderColor = UIColor.gray.cgColor 
    cell.commentBtn.layer.cornerRadius = 5 
    cell.commentBtn.clipsToBounds = true 

    return cell 
} 

@IBAction func cameraBtnClicked(_ sender: AnyObject) { 
    print("Camera Clicked") 
} 

} 

そして私は、このJSONレスポンス

("main_content", [ 
{ 
    "author" : "maruf khandakar", 
    "post_id" : 110, 
    "post_date" : "October 3, 2016", 
    "title" : "hjhjhjhjkljkhasfreiwutb cltjutjuregjre nb", 
    "show_comment_number" : "0", 
    "show_likes" : "0", 
    "post_img" : [ 
    { 
    "guid" : "http:\/\/myURL\/wp-content\/uploads\/2016\/10\/IMG_1475492476.jpg" 
     } 
], 
"author_img" : "http:\/\/myUrl\/wp- content\/uploads\/2016\/10\/Screenshot_1-2.png", 
    "post_time" : "11:01 am", 
    "blog_text" : "sfdhjusolidasfjgfkdsjfdklshfj" 
    }, 
{ 
"author" : "maruf khandakar", 
"post_id" : 112, 
"post_date" : "October 3, 2016", 
"title" : "hjhjhjhjkljkhasfreiwutb cltjutjuregjre nb0", 
"show_comment_number" : "1", 
"show_likes" : "1", 
"post_img" : [ 
    { 
    "guid" : "http:\/\/myUrl\/wp- content\/uploads\/2016\/10\/IMG_1475494067.jpg" 
    } 
    ], 
    "author_img" : "http:\/\/myURL\/wpcontent\/uploads\/2016\/10\/Screenshot_1-2.png", 
    "post_time" : "11:27 am", 
    "blog_text" : "sfdhjusolidasfjgfkdsjfdklshfj0" 
}, 
{ 
    "author" : "russell99", 
    "post_id" : 129, 
    "post_date" : "October 24, 2016", 
    "title" : "russels 1st post", 
    "show_comment_number" : "0", 
    "show_likes" : "0", 
    "post_img" : [ 
    { 
     "guid" : "http:\/\/myURL\/wpcontent\/uploads\/2016\/10\/IMG_1477280037.jpg" 
    } 
    ], 
    "author_img" : "http:\/\/muURL\/Content\/Images\/Products\/NoImageAvailable .jpg", 
    "post_time" : "3:33 am", 
    "blog_text" : "russel post" 
}, 
{ 
    "author" : "russell99", 
    "post_id" : 131, 
    "post_date" : "October 24, 2016", 
    "title" : "russels 2nd post", 
    "show_comment_number" : "0", 
    "show_likes" : "0", 
    "post_img" : [ 
    { 
     "guid" : "http:\/\/myURL\/wpcontent\/uploads\/2016\/10\/IMG_1477282075.jpg" 
    } 
    ], 
    "author_img" : "http:\/\/muURL\/Content\/Images\/Products\/NoImageAvailable .jpg", 
    "post_time" : "4:07 am", 
    "blog_text" : "russel post 2" 
} 
]) 

私はAlamofireに新しいですと、それは私のためにかなり混乱をされているのです。助けてください。

答えて

1

JSONレスポンスのタイプはArrayであり、このようにループ用に設定されていません。

for items in json.arrayValue { 

    let author: String? = anItem["author"].stringValue 
    let title: String? = anItem["title"].stringValue 
    self.tableAuthor.append(author!) 
    self.tableTitle.append(title!) 
} 

注:の代わりに、あなたが最初のカスタムクラスBookを作成する必要があり、そのために[Book]のようなカスタム型の配列を作成する必要があり、複数のアレイを使用します。

関連する問題