我正在尝试完成社交媒体应用的登录页面,并且出现了一个我无法弄清楚的错误。尝试构建登录时出现条件绑定错误的初始化工具登录
下面是完整的代码:
import UIKit
import Firebase
import FirebaseAuth
import FirebaseStorage
import FirebaseDatabase
import SwiftKeychainWrapper
class UserVC: UIViewController, UIImagePickerControllerDelegate,
UINavigationControllerDelegate
{
@IBOutlet weak var userImagePicker: UIButton!
@IBOutlet weak var CompleteSignInBtn: UIButton!
@IBOutlet weak var usernameField: UITextField!
var userUid: String!
var emailField: String!
var passwordField: String!
var imagePicker : UIImagePickerController!
var imageSelected = false
var username: String!
override func viewDidLoad(){
super.viewDidLoad()
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.allowsEditing = true
}
func keychain(){
KeychainWrapper.standard.set(userUid, forKey: "uid")
}
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerEditedImage] as? UIImage {
userImagePicker.setImage(image,for:.normal)
imageSelected = true
} else {
print("Image was not selected")
}
imagePicker.dismiss(animated: true, completion: nil)
}
func setUpUser(img: String){
let userData = [
"username": username!,
"userImg": img
]
keychain()
let setLocation = Database.database().reference().child(userUid)
setLocation.setValue(userData)
}
func uploadImg() {
if usernameField.text == nil {
print("Please choose a username")
CompleteSignInBtn.isEnabled = false
} else {
username = usernameField.text
CompleteSignInBtn.isEnabled = true
}
guard let img = userImagePicker.image, imageSelected == true else {
print("image must be selected")
return
}
if let imgData = UIImageJPEGRepresentation(img, 0.2){
let imgUid = NSUUID().uuidString
let metadata = StorageMetadata()
metadata.contentType = "img/jpeg"
Storage().reference().child(imgUid).put(imgData, metadata: metadata) { (metadata, error) in
if error =! nil {
print("Did not upload")
} else{
print("Uploaded")
let downloadURl = metadata?.downloadURL()?.absoluteString
if let url = downloadURl {
self.setUpUser(img: url)
}
}
}
}
}
@IBAction func completeAccount(_ sender: Any){
Auth.auth().createUser(withEmail: emailField, password: passwordField, completion: { (user, error) in
if error != nil {
print("Error\(error)")
} else {
if let user = user {
self.userUid = user.uid
}
}
self.uploadImg()
})
dismiss(animated: true, completion: nil)
}
@IBAction func seletedImagePicker(_ sender: Any){
present(imagePicker, animated: true, completion: nil)
}
@IBAction func cancel(_ sender: AnyObject){
dismiss(animated: true, completion: nil)
}
}
这是造成在标题中提到的错误代码是这样的:
guard let img = userImagePicker.image, imageSelected == true else {
print("image must be selected")
return
}
我不知道该怎么做。我读到这与userimagePicker.image可能不是可选的事实有关,但在指南中我遵循它的工作原理。
谢谢!
什么是错误? –
[编辑]你的问题与完整和确切的错误。 – rmaddy
我想你试图让守卫让非可选值。你已经在使用!用变量表示你有一个不是可选的变量。 –