我在上传照片作为个人照片时遇到一些困难。这是我的代码的一些设置。这就是我设置用户类的方式。
import UIKit
import FirebaseStorage
import FirebaseDatabase
import FirebaseAuth
class Users: NSObject {
var username : String = ""
var email : String = ""
var uid : String = ""
var profilePicLink : String
init(username : String, email: String, uid : String, profilePicLink: String ) {
self.username = username
self.email = email
self.uid = uid
self.profilePicLink = profilePicLink
}
func getProfileImage() -> UIImage {
if let url = NSURL(string: profilePicLink){
if let data = NSData(contentsOf: url as URL) {
return UIImage(data: data as Data)!
}
}
return UIImage()
}
func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
guard let uid = Auth.auth().currentUser?.uid else { return }
let storageRef = Storage.storage().reference().child("user/\(uid)")
guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
storageRef.putData(imageData, metadata: metaData) { metaData, error in
if error == nil, metaData != nil {
storageRef.downloadURL { url, error in
completion(url)
// success!
}
} else {
// failed
completion(nil)
}
}
}
}
在SettingView类中,我调用了func uploadProfileImage,但是,出现错误“源文件中的编辑器占位符”。请在函数uploadPhoto int setview类中建议完成时应传递什么值]
import UIKit
class SettingView: UIViewController, UIImagePickerControllerDelegate & UINavigationControllerDelegate {
@IBOutlet var imageView: UIImageView!
@IBOutlet var displayName: UILabel!
var selectedUser:Users?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(displayName.text == selectedUser?.username)
}
@IBAction func getPhotoButton(_ sender: Any) {
let image = UIImagePickerController()
image.delegate = self
image.sourceType = UIImagePickerController.SourceType.photoLibrary
self.present(image, animated: true, completion: nil)
}
@IBAction func updatePhoto(_ sender: Any) {
uploadPhoto()
}
func uploadPhoto(){
selectedUser?.uploadProfileImage(imageView.image!, completion: <#(URL?) -> ()#>) **Error : Editor placeholder in source file**
}
private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let pickerInfo: NSDictionary = info as NSDictionary
let img : UIImage = pickerInfo.object(forKey: UIImagePickerController.self) as! UIImage
imageView.image = img
self.dismiss(animated: true, completion: nil)
}
我在上传照片作为个人照片时遇到一些困难。这是我的代码的一些设置。这就是我设置用户类的方式。导入UIKit导入FirebaseStorage导入...
XCode抱怨,因为您在completion: <#(URL?) -> ()#>)
方法中具有编辑器占位符uploadPhoto
。将此替换为uploadPhoto
方法: