Hello all as i am a Fresher so dont know how to fetch image and pdf file from API and how to display in tableviewcell so that user can see the image and pdf file as well download it from there.I tried some code for image but its not working and dont have a single idea for pdf.Please help.
code for image : I have declared an array of images like below :
var announimage : Array = [UIImage]()
Below is the format of my JSON data.
{
"Download_Details": [
{
"school_id": 1,
"class_id": "Pre - KG ",
"section": "A ",
"file_name": "427a3be0155b49db999cffb51f078f9c_431875732.pdf",
"title": "TeQ",
"message": "Hello Users",
"date": null
},
{
"school_id": 1,
"class_id": "Pre - KG ",
"section": "A ",
"file_name": "dce5ab53f45f4ec5b52894bc6286ed35_1376021.jpg",
"title": "Welcome",
"message": "Welcomes you.",
"date": null
},
{
"school_id": 1,
"class_id": "Pre - KG ",
"section": "A ",
"file_name": "9d3ff19bd54e48a087947227ee36c68c_13417773.png",
"title": "TEST",
"message": "TEST",
"date": null
}
],
}
Below is the code i have tried :
let responseString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary
let downarray = responseString?.value(forKey: "Download_Details") as? NSArray
for down in downarray!
{
let dowdict = down as? NSDictionary
let dmsgname = dowdict?.value(forKey: "message")
self.announmessage.append(dmsgname as! String)
let downimage = dowdict?.value(forKey: "file_name")
self.announimage.append(downimage as! UIImage)
}
DispatchQueue.main.async
{
self.annountable.reloadData()
}
UITableView DataSource :
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell2 = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! AnnounceCellTableViewCell
cell2.announlabel.text = announmessage[indexPath.row]
cell2.announdate.text = announcedates[indexPath.row]
let image :UIImage = UIImage(data:announimage[indexPath.row] as! Data)!
cell2.dataimage.image = image
return cell2
}
let imgUrlStr:String = "https://dncache-mauganscorp.netdna-ssl.com/thumbseg/378/378006-bigthumbnail.jpg";
if let imgURL = URL.init(string: imgUrlStr) {
do {
let imageData = try Data(contentsOf: imgURL as URL);
let image = UIImage(data:imageData);
print("here you will find your image:- \(String(describing: image)) ");
} catch {
print("Unable to load data: \(error)")
}
}
Output:--
here you will find your image:- Optional(<UIImage: 0x6080000bca40>, {450, 338})
In your case get your full url by using following piece of code
var prefixUrl = "http://apidomain.com/";
let imageUrlStr = dowdict?.value(forKey: "file_name")
prefixUrl.append(imageUrlStr);
print("full url \(prefixUrl)");
FOR PDF -- as pdf does not display in image view, so you need to display it in webView. Just load request in webView for pdf.
let webView = UIWebView.init();
let pdfUrlStr:String = "http://www.pdf995.com/samples/pdf.pdf";
let pdfUrl = URL.init(string: pdfUrlStr);
let urlRequest = URLRequest.init(url: pdfUrl!, cachePolicy: URLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 30.0);
webView.loadRequest(urlRequest);
Try below code on cell for row
let image : UIImage = UIImage(data: filteredAry[indexPath.row] as! Data)
cell2.dataimage.image = image
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With