我正在关注Google的guide,以便从存储中获取图像,然后使用" FirebaseStorageUI"将其放入imageView,这似乎使用了SDWebImage。
我遇到的问题是图像没有设置。控制台中没有错误。我的代码:
@IBOutlet weak var imageView: UIImageView!
var ref = FIRDatabase.database().reference()
var storageRef = FIRStorage.storage().reference()
override func viewWillAppear(_ animated: Bool) {
self.getHouseID(){ (houseName) -> () in
if houseName.characters.count > 0 {
self.houseIDLabel.text = houseName // does work correctly
let photoRef = self.storageRef.child("\(houseName)/\("housePhoto.jpg")")
self.housePhotoImageView.sd_setImage(with: photoRef) // not working
} else {
print("error while setting image and house name label")
}
}
}
My Storage看起来像这样:
使用houseName
正确设置标签,// create table
TableView<Person> table = new TableView<Person>();
// create columns
TableColumn<Person, String> nameCol = new TableColumn<Person, String>("Name");
nameCol.setCellValueFactory(new PropertyValueFactory("name"));
TableColumn<Person, Address> addressCol = new TableColumn<Person, String>("Address");
addressCol.setCellValueFactory(new PropertyValueFactory("address"));
// add columns
table.getColumns().setAll(nameCol, addressCol);
// get data from db, return object List<Person> from DB
ObservableList<Person> persons = getPersonsFromDB();
table.setItems(persons);
tableView.setOnMouseClicked((MouseEvent event) -> {
if (event.getClickCount() > 1) {
onEdit();
}
});
public void onEdit() {
// check the table's selected item and get selected item
if (table.getSelectionModel().getSelectedItem() != null) {
Person selectedPerson = table.getSelectionModel().getSelectedItem();
nameTextField.setText(selectedPerson.getName());
addressTextField.setText(selectedPerson.getAddress());
}
}
也用于存储路径以检索图像。我在这里错过了什么?
答案 0 :(得分:1)
我的第一个猜测是你没有在主队列上设置它。
试试这个:
DispatchQueue.main.async {
self.housePhotoImageView.sd_setImage(with: photoRef)
}
我不知道您的图片文件是否没有文件扩展名,这也许值得一试。希望这有帮助
答案 1 :(得分:1)
1。我认为问题是你的awesomehouse/
最后有一个斜线。
尝试检查您正在创建的child()
:awesomehouse
或awesomehouse/
2。第二个可能的问题是您尝试提取"housePhoto.jpg"
而不是存储housePhoto
。
所以,它应该是:
let photoRef = self.storageRef.child("awesomehouse/").child("housePhoto")
self.housePhotoImageView.sd_setImage(with: photoRef) // should work now
或者最好将照片保存到扩展名为".jpg"
的存储空间,然后是:
let photoRef = self.storageRef.child("awesomehouse/").child("housePhoto.jpg")
self.housePhotoImageView.sd_setImage(with: photoRef) // should work now
尝试两者。我认为它会解决你的问题。
希望有所帮助