iOS Swift & Parse - getDataInBackground 不工作?
Posted
技术标签:
【中文标题】iOS Swift & Parse - getDataInBackground 不工作?【英文标题】:iOS Swift & Parse - getDataInBackground not working? 【发布时间】:2017-07-23 19:21:14 【问题描述】:目前正在学习 Swift 和 ios。我尝试使用 Parse 访问保存的图片。但是,我无法使用getDataInBackground(block:)
访问它。
这是我的代码:
//
// ViewController.swift
// Instragram
//
// Created by Macbook Pro on 22.07.17.
// Copyright © 2017 Macbook Pro. All rights reserved.
//
import UIKit
import Parse
class ViewController: UIViewController
@IBOutlet weak var picture: UIImageView!
@IBOutlet weak var senderLbl: UILabel!
@IBOutlet weak var recieverLbl: UILabel!
@IBOutlet weak var messageLbl: UILabel!
override func viewDidLoad()
super.viewDidLoad()
// Creating tables and data in database
let imageData = UIImageJPEGRepresentation(picture.image!, 0.5)
let file = PFFile(name: "picture.jpg", data: imageData!)
let table = PFObject(className: "messages")
table["sender"] = "Akhmed"
table["reciver"] = "Bob"
table["picture"] = file
table["message"] = "Hello!"
table.saveInBackground (success, error) -> Void in
if(success)
print("Saved successful")
else
print(error!)
//Recieving Data from the Server
let information = PFQuery(className: "messages")
information.findObjectsInBackground(objects: [PFObject]?, error) -> Void in
if error == nil
for object in objects!
self.senderLbl.text = object["sender"] as? String
self.recieverLbl.text = object["reciver"] as? String
self.messageLbl.text = object["message"] as? String
object["picture"].getDataInBackground(...)
else
print(error!)
在我访问名称、接收者和消息字符串后,我尝试访问已保存在服务器上的图像:
object["picture"].getDataInBackground(block:)
但是,在我输入 object["picture"]
之后,Swift 甚至不再自动更正。我也收到一个错误:
'“Any”类型的值没有成员'getDataInBackground(block:)'
任何想法有什么问题吗?在我看来,即使图像保存在服务器上的字符串“图片”下,Swift 也找不到字符串 picture
。
【问题讨论】:
读取错误。object["picture"]
是 Any
,而不是更具体的类。你需要一个演员在那里。
【参考方案1】:
您需要先将其转换为PFFfile
对象,然后使用getDataInBackground
函数检索实际图像数据,如下所示:
let imageFile = object["picture"] as? PFFile
imageFile?.getDataInBackground (block: (data, error) -> Void in
if error == nil
if let imageData = data
self.myImage = UIImage(data:imageData)
)
【讨论】:
这很有帮助,虽然我不得不改变两件事,但效果很好。谢谢以上是关于iOS Swift & Parse - getDataInBackground 不工作?的主要内容,如果未能解决你的问题,请参考以下文章
Swift & Parse:UISearchbar 不起作用
如何为经典的帖子和评论模型构建 Parse 数据模型? (使用 iOS、Swift、Parse)