在我的应用程序中,我想解析包含文本和图像的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")
提前谢谢
答案 0 :(得分:0)
得到一个有效的json响应,我可以想象阿拉伯字符是特殊字符,所以看看Swift - encode URL
发生此错误,因为您尝试使用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
}
点击此处查看从网络获取图片的好方法:Swift - encode URL