Ich habe ein Problem mit dem Firebase SDK für iOS in swift 2. Ich versuche, ein Bild zu einem Download aus dem Firebase-Speicher zu setzen. Wenn ich die Funktion anrufe, gibt es null zurück. Ich denke es ist, weil die Download-Aufgabe von der Firebase SDK asynchron ist, wenn also der zurückgegebene Zustand aufgerufen wird, wird die UID, die notwendig ist, nicht gesetzt, weil die Task nicht beendet ist. Wie kann ich das lösen, damit ich das richtige Bild zurückbekomme?Swift Firebase-Rückgabe in asynchron Aufgabe
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = downloadProfilePicFirebase()
}
Die Firebase Download-Funktion:
func downloadProfilePicFirebase() -> UIImage{
print("download called")
//local paths
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentDirectorPath:String = paths[0]
let imagesDirectoryPath = documentDirectorPath.stringByAppendingString("/profiles")
var uid = String()
if let user = FIRAuth.auth()?.currentUser {
let uid = user.uid
let storageRef = FIRStorage.storage().referenceForURL("gs://myid.appspot.com")
let profilePicRef = storageRef.child("/profile_pic.jpg")
let homeDir: NSURL = NSURL.fileURLWithPath(NSHomeDirectory())
let fileURL: NSURL = homeDir.URLByAppendingPathComponent("Documents").URLByAppendingPathComponent("profiles").URLByAppendingPathComponent("profile_pic").URLByAppendingPathExtension("jpg")
// Download to the local filesystem
let downloadTask = profilePicRef.writeToFile(fileURL) { (URL, error) -> Void in
if (error != nil) {
print(error)
} else {
// svaed localy now put in ImageView
}
}
}
return UIImage(contentsOfFile: "\(imagesDirectoryPath)"+"/profile_pic_user_"+uid+".jpg")!
}
Siehe [Antwort] (http://stackoverflow.com/a/38439609/5654848). – Dershowitz123
@ Dershowitz123 ja aber der Rückkehrzustand gemeint wird vor der Fertigstellung aufgerufen werden Ich möchte die Funktion an diesem Punkt halten –
Siehe auch diese Frage, und die Antwort, die ich verweise auf: http://StackOverflow.com/Questions/38547875/How -to-run-obverveeventtype-im-Haupt-Thread –