如果图像名为"x〃;在我的资产中定义为我的imageView,我想在点击上传按钮时提醒屏幕,但如果有一张名为";x〃;在imageView中。它仍然将数据保存到Firebase数据库。请帮帮我。
@IBAction func uploadButtonClicked(_ sender: Any) {
if self.imageView.image == UIImage(named: "x") && self.commentText.text! == "" {
self.makeAlert(tittleInput: "Error", messageInput: "Please choose photo!")
}else {
let storage = Storage.storage()
let storageReference = storage.reference()
let mediaFolder = storageReference.child("media")
if let data = imageView.image?.jpegData(compressionQuality: 0.5) {
let uuid = UUID().uuidString
let imageReference = mediaFolder.child("(uuid).jpg")
imageReference.putData(data, metadata: nil) { storageMetaData, error in
if error != nil {
self.makeAlert(tittleInput: "Error", messageInput: error?.localizedDescription ?? "Error")
} else {
imageReference.downloadURL { url, error in
if error == nil {
let imageURL = url?.absoluteString
let fireStoreDatabase = Firestore.firestore()
var fireStoreReference : DocumentReference? = nil
let fireStorePost = ["imageUrl" : imageURL!, "postedBy": Auth.auth().currentUser?.email! , "postComment": self.commentText.text!,"date": FieldValue.serverTimestamp(), "like": 0] as [String: Any]
fireStoreReference = fireStoreDatabase.collection("Posts").addDocument(data: fireStorePost, completion: { error in
if error != nil {
self.makeAlert(tittleInput: "Error", messageInput: error?.localizedDescription ?? "Error")
} else {
self.imageView.image = UIImage(named: "x")
self.commentText.text = ""
self.tabBarController?.selectedIndex = 0
}
})
}
}
}
}
}
}
您的if
语句看起来不正确:
if self.imageView.image == UIImage(named: "x") && self.commentText.text! == "" {
上面写着:
- 如果
- imageView的图像等于UIImage(命名为:"x"(
- 与
- commentText字段(或标签?(等于"(空字符串(
- imageView的图像等于UIImage(命名为:"x"(
我想你想要这个:
if self.imageView.image == UIImage(named: "x") || self.commentText.text! == "" {
上面写着:
- 如果
- imageView的图像等于UIImage(命名为:"x"(
- 或
- commentText字段(或标签?(等于"(空字符串(
- imageView的图像等于UIImage(命名为:"x"(
在您的版本中,您创建了UIImage的一个新实例,并对两个不相等的对象进行比较,因为它们位于不同的内存区域。要比较图片名称,您需要获得一个url,这取决于您如何获得图像,您可以从中提取文件名。
如果您使用UIImagePickerController来检索图像,那么委托方法的实现将看起来像:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
{
let url = info[.imageURL] as? URL
if let name = url?.lastPathComponent {
print("Name: (name)")
}
}