大家好,因为我是一名新手所以不知道如何从API获取图像和pdf文件以及如何在tableviewcell中显示,以便用户可以看到图像和pdf文件以及从那里下载它。我尝试了一些代码图像,但它没有工作,并没有一个单一的想法pdf.Please帮助。
图片代码: 我宣布了一系列图像,如下所示:
var announimage : Array = [UIImage]()
以下是我的JSON数据的格式。
{
"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
}
],
}
以下是我尝试过的代码:
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数据源:
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
}
答案 0 :(得分:3)
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)")
}
}
输出: -
here you will find your image:- Optional(<UIImage: 0x6080000bca40>, {450, 338})
在您的情况下,使用以下代码获取您的完整网址
var prefixUrl = "http://apidomain.com/";
let imageUrlStr = dowdict?.value(forKey: "file_name")
prefixUrl.append(imageUrlStr);
print("full url \(prefixUrl)");
FOR PDF - 由于pdf未在图片视图中显示,因此您需要在webView中显示它。只需在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);
答案 1 :(得分:1)
在行
的单元格上尝试以下代码Error: length(x) not less than or equal to 2