在UITableview中调用显示图像时,图像URL显示错误

时间:2016-02-06 09:51:06

标签: ios swift uitableview

我已将json图像url存储在一个数组中,但在调用url时显示错误

模型类

    <A>
       <A Number="1234" Date="05-25-2007">
          <B>
             <B1>Judith Miller</B1>
             <Tax N="Yes" Rate="21"/>
          </B>
          <C>
             <C1 x="xxxxx" Price="20"/>
             <C1 x="yyyyy" Price="15"/>
          </C>
       </A>
       <A Number="1235" Date="05-26-2007">
          <B>
             <B1>Herbert Marshall</B1>
             <Adress Street="Saint Marc 2250" City="Oslo"/>
             <Tax N="Yes" Rate="21"/>
          </B>
          <C>
             <C1 x="yyyy" Price="25"/>
             <C1 x="zzzz" Price="12"/>
             <C1 x="xxxx" Price="22"/>
          </C>
       </A>
       <A Number="1236" Date="05-26-2007">
          <B>
             <Nazwa>Judith Miller</Nazwa>
             <Adress Street="Kennedy 511" City="Florida"/>
             <Tax N="Yes" Rate="21"/>
          </B>
          <C>
             <C1 x="fffff" Price="15"/>
          </C>
       </A>
       <A Number="1237" Date="05-25-2007">
          <B>
             <B1>Harrison Faber</B1>
             <Adress Street="Street 326" City="London"/>
             <Tax N="No" Rate="0"/>
          </B>
          <C>
             <C1 x="xxx" Price="20"/>
             <C1 x="yyy" Price="9"/>
          </C>
       </A>
    </A>

TableView控制器存储变量

import Foundation
  class ProductDetails {
  var productAuthor: String!
  var productPrice: Int!
  var artImages: [ArtImage]!
}

class ArtImage {
  var imagepath: String!
  var imgvideotype: Int!
}

解析功能

var globalArr = [ProductDetails]()

Tableview DataSource

func parseJSONData(data: NSData) -> [ProductDetails] {
    var product_Detail = [ProductDetails]()
    do {
        let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary

        let jsonProductDetails = jsonResult?["data"] as! [AnyObject]
        //print("the json response is",jsonProductDetails)

        for jsonproductDetail in jsonProductDetails{
            let productDetail = ProductDetails()
           // let jsonProductImageDetails = jsonProductDetails["images"] as! [AnyObject]

            productDetail.productAuthor = jsonproductDetail["first_name"]as! String
            productDetail.productPrice =  jsonproductDetail["prodprice"]as! Int


            // Getting inside the json
            let jsonProductImageDetails = jsonproductDetail["images"] as! [AnyObject]
             var artImagesModelArray  = [ArtImage]()
            for image in jsonProductImageDetails {
                let artImage = ArtImage();
                artImage.imagepath = image["imagepath"] as! String
                artImage.imgvideotype = image["imgvideotype"] as! Int
                artImagesModelArray.append(artImage)
            }
            productDetail.artImages = artImagesModelArray;
            product_Detail.append(productDetail)



            }

        }

    catch {
        print (error)
    }

    return product_Detail
}

这里我已经存储了解析json并在tableview单元格中显示了一些细节,这里一切正常。  但调用异步方式从数组加载图像显示错误

任何建议..plz .. 谢谢

1 个答案:

答案 0 :(得分:0)

您需要更改从ProductDetails获取图片网址的方式。 我想你需要使用这样的东西:

 if let url = NSURL(string: self.globalArr[indexPath.row].artImages[imageIndex].imagepath) { // your code }

因为当你执行

if let url = (NSURL(string: self.globalArr[indexPath.row]))

你得到了ProductDetails的对象,但没有图片网址。