SD未设置从Firebase存储中提取的图像

时间:2017-05-21 14:38:17

标签: swift firebase firebase-realtime-database firebase-storage sdwebimage

我正在关注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看起来像这样:

enter image description here

enter image description here

使用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()); } } 也用于存储路径以检索图像。我在这里错过了什么?

2 个答案:

答案 0 :(得分:1)

我的第一个猜测是你没有在主队列上设置它。

试试这个:

DispatchQueue.main.async {
  self.housePhotoImageView.sd_setImage(with: photoRef)
}

我不知道您的图片文件是否没有文件扩展名,这也许值得一试。希望这有帮助

答案 1 :(得分:1)

1。我认为问题是你的awesomehouse/最后有一个斜线。

尝试检查您正在创建的child()awesomehouseawesomehouse/

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

尝试两者。我认为它会解决你的问题。

希望有所帮助