アプリの 1 つのユーザー プロファイル画面で作業しています。ユーザーが携帯電話から画像を選択して、アプリケーションのメイン画面で自分のプロフィール画像を表示できるようにしたかったのです。私が抱えている問題は、画像はプレーンテキストよりも保存に時間がかかることです. セグエがユーザーをメイン画面に移動する前に、画像が解析のために保存されていることを確認する方法を見つけたいと思います。[次へ] をクリックするとすぐに、セグエがユーザーをメイン画面に移動させます。解析用に「保存」されたプロファイル画像が空であるため、メイン画面でユーザーのプロファイル画像を表示できません。これが発生すると、nil 値の例外が発生します。
注:セグエを削除すると、アプリケーションはユーザーの情報とユーザーの画像を正常に保存します。
次のコードは、ユーザー名、パスワードなどのすべてのチェックを行った後のものです。
if photoSelected == false {
error = "Please select an image to post"
}
if error != "" {
displayAlert("Cannot Post Image", error: error)
} else {
var post = PFObject(className: "Images")
post["username"] = PFUser.currentUser().username
post.saveInBackgroundWithBlock({ (success: Bool, error: NSError!) -> Void in
if success == false {
self.displayAlert("Could not post Image", error: "Please try again later")
} else {
let imageData = UIImagePNGRepresentation(self.profileImage.image)
let profilePic = PFFile(name: "image.png", data: imageData)
post["profileImage"] = profilePic;
//I even added an activity indicator to stall the app before proceeding to the main page.
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 200, 200))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge
self.view.addSubview(activityIndicator)
activityIndicator.startAnimating()
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
post.saveInBackgroundWithBlock({ (success: Bool, error: NSError!) -> Void in
UIApplication.sharedApplication().endIgnoringInteractionEvents()
if success == false {
self.displayAlert("Could not post Image", error: "Please try again later")
} else {
//check
println("picture was uploaded")
}
})
}
})
}
//saves all the user's values username, password, etc.
self.user.save()
//takes the user to the MainScreen
self.performSegueWithIdentifier("moveToMainScreen", sender: self)
}
手伝ってくれてどうもありがとう!