Я пытаюсь загрузить изображение с Parse.com в uiimageview внутри моей раскадровки.Извлечь изображение в UiimageView из Parse (Swift)
Я загрузил изображение в Parse. В идеале это вызовет мой образ по идентификатору, а затем продолжит отображение его внутри uiimageView. Я искал высокий и низкий для ответа, но большинство из них либо для Obj-C, либо только для половины кода для вызова изображения.
Я собираюсь отображать изображение, которое я могу обновлять ежедневно.
Вот мой код. Он работает без ошибок, но изображение не появляется.
override func viewDidLoad() {
super.viewDidLoad()
//Print out a message if we're able to get to this part of the program.
print("Reached getProductData function. Now asking for data.")
getProductData()
print("done");
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func getProductData() //-> UIImage
{
let query: PFQuery = PFQuery(className: "UserPhoto")
var gridimage = UIImage()
print("pass");
//call function to get the data from parse by specifyng an objectId
query.getObjectInBackgroundWithId("XXXXXXXXXX") {
(productData:PFObject?, error:NSError?) -> Void in
if error == nil && productData != nil {
//Extract values from the productData PFObject and store them in constants
//-----start image loading
print("ok")
if let productImageFile = productData!["productImage"] as? PFFile {
productImageFile.getDataInBackgroundWithBlock {(imageData: NSData?, error: NSError?) -> Void in
if error == nil {
//here I changed var gridimage to just gridimage
gridimage = UIImage(data:imageData!)!
self.eliegrid.image = UIImage(data:imageData!)
print("next")
}
else
{
print("error")
}
}
}
//-----end image loading
} else if error != nil {
print("Could not load data from Parse")
}
}
//return gridimage
}
}
Похоже, что это пропускает этот блок:
if let productImageFile = productData!["productImage"] as? PFFile {
EDIT: Потому что никогда не печатает "следующий".
Я также проверил
iOS - Retrieve and display an image from Parse in UIImageView (Swift 1.2 Error)
Но она по-прежнему не работает.
Я действительно новичок как в Parse, так и в Swift, и, возможно, мне не хватает чего-то простого. Любая помощь будет оценена!
UPDATE:
Благодаря @beyowulf! Вот рабочий код:
func getProductData()
{
let query: PFQuery = PFQuery(className: "UserPhoto")
var gridimage = UIImage()
print("pass");
//call function to get the data from parse by specifyng an objectId
query.getObjectInBackgroundWithId("cF0h6RVcKu") {
(productData:PFObject?, error:NSError?) -> Void in
if error == nil && productData != nil {
//Extract values from the productData PFObject and store them in constants
//-----start image loading
print("ok")
print(productData)
if let productImageFile = productData!["imageFile"] as? PFFile {
productImageFile.getDataInBackgroundWithBlock {(imageData: NSData?, error: NSError?) -> Void in
print("error")
if error == nil {
//here I changed var gridimage to just gridimage
gridimage = UIImage(data:imageData!)!
self.eliegrid.image = UIImage(data:imageData!)
print("next")
}
}
}
}
else
{
print("error")
}
}
}
}
Вы уверены, что у вас есть изображение грамматического разбора? Вы можете проверить на parse.com? – Hassan
Да, у меня есть изображение на Parse.com. Я проверил и дважды проверил на моем бэкэнде онлайн. –