SWIFT解析JSON

时间:2016-10-26 11:50:44

标签: json swift image parsing url

在我的应用程序中,我想解析包含文本和图像的JSON结果。 JSON结果显示此字符串,因为返回的URL包含阿拉伯字符:

"Media_Photo" = "http://95.138.143.176/photos/FB/Ramy Ayach - \U0631\U0627\U0645\U064a \U0639\U064a\U0627\U0634/thumb/n583140_147657870534036_8903807944579055616.jpg";

这会导致错误,因为它应该像:

http://95.138.143.176/photos/FB/Ramy Ayach - رامي عياش/thumb/n583140_147657870534036_8903807944579055616.jpg

如何更改此URL并能够在UIImageView中显示图像。

我试过这段代码:

let mediaPhotoUrl = newsInGroup?.mediaPhotoURL
    if let dataImageFornews = NSData(contentsOfURL: NSURL(string: (mediaPhotoUrl)!)!){
        imageOfNews.image = UIImage(data: dataImageFornews)
    } else {
        imageOfNews.hidden = true
    }

但发生错误:

  

致命错误:在解包可选值时意外发现nil

JSON响应也返回:

 "Media_Photo" = "<null>";

如果没有图像。我使用以下代码处理了这个问题:

 if media.valueForKey("Media_Photo") != nil {
    mediaPhoto = media.valueForKey("Media_Photo") as? String
    print("mediaphotoURL: \(mediaPhoto)")
    }

这是正确的方法吗?

 print("mediaphotoURL: \(mediaPhoto)")

给出

 mediaphotoURL: Optional("http://95.138.143.176/photos/FB/Ramy Ayach - رامي عياش/thumb/n583140_147657870534036_8903807944579055616.jpg")

提前谢谢

1 个答案:

答案 0 :(得分:0)

  1. 得到一个有效的json响应,我可以想象阿拉伯字符是特殊字符,所以看看Swift - encode URL

  2. 发生此错误,因为您尝试使用nil值

    if let mediaPhotoUrlNotNil:String = mediaPhotoUrl {
     if let mediaPhotoUrlToNSURL = NSURL(string: mediaPhotoUrlNotNil) {
      if let dataImageFornews = NSData(contentsOfURL: mediaPhotoUrlToNSURL) {
           //not nil
          } else {
           //nil
          }
        } else {
         //its nil
        }
       } else {
      //its nil
     }
    
  3. 点击此处查看从网络获取图片的好方法:Swift - encode URL