我正在尝试在UITableView上显示Firestore和Google Storage的数据。
我有一个自定义单元格设置,它有自己的类名为" PriceGuideCell"
在安装FirebaseUI / Storage pod之后,我尝试使用Firebase网站上显示的方法。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! PriceGuideCell
var item = itemData[indexPath.row]
let reference: StorageReference = storageRef.child("test/\(item.itemID!).jpg")
cell.nameLabel?.text = item.name
cell.yearLabel?.text = String(item.year)
cell.boxnumLabel?.text = String(item.boxnum)
cell.itemImage?.sd_setImage(with: reference, placeholderImage: #imageLiteral(resourceName: "placeholder"))
}
}
return cell
}
上面的代码给了我一个错误:
Cannot convert value of type 'StorageReference' to expected argument type 'URL'
下面的代码,使用(参考).downloadURL,我已经开始工作了,但我不知道这是不是最好的做法:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! PriceGuideCell
var item = itemData[indexPath.row]
let imageURLRef = storageRef.child("test/\(item.itemID!).jpg")
imageURLRef.downloadURL { url, error in
if let error = error {
print("There's an error:\(error)")
} else {
cell.nameLabel?.text = item.name
cell.yearLabel?.text = String(item.year)
cell.boxnumLabel?.text = String(item.boxnum)
cell.itemImage?.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "placeholder"))
}
}
return cell
}
我是否需要为sd_setImage安装其他东西才能接受StorageReference?另外,我的Podfile目标是9.0。关于使用8.0,有一些in the FirebaseUI readme。我不知道这是否会影响它,但对于我的项目使用的其他一些pod来说,8.0太低了。
答案 0 :(得分:0)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! PriceGuideCell
var item = itemData[indexPath.row]
let referenceImage: StorageReference = storageRef.child("test/\(item.itemID!).jpg")
let url = URL(string: referenceImage!)!
cell.nameLabel?.text = item.name
cell.yearLabel?.text = String(item.year)
cell.boxnumLabel?.text = String(item.boxnum)
cell.itemImage?.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "placeholder"))
}
}
return cell
}
答案 1 :(得分:0)
导入 FirebaseUI 和 SDWebImage
using Ghostscript.NET.Rasterizer;
...
using (GhostscriptRasterizer raster = new GhostscriptRasterizer())
{
raster.Open(filename);
pages = raster.PageCount;
_bitpages = new Bitmap[raster.PageCount];
for (int i = 1; i < pages + 1; i++)
{
_bitpages[i - 1] = (Bitmap)raster.GetPage(dpi, dpi, i);
// convert and save image here
}
raster.Close();
}
Firebase的 StorageReference 将通过以下方法工作:
UIImageView.sd_setImage(with:StorageReference,placeholderImage: UIImage)
如下所示:
import FirebaseUI
import SDWebImage