gpt4 book ai didi

ios - Swift Parse - 嵌套调用问题

转载 作者:行者123 更新时间:2023-11-30 13:46:19 25 4
gpt4 key购买 nike

在我的应用程序中,我需要在不同的 View Controller 中加载用户详细信息。我加载的详细信息不一定是当前登录的用户的详细信息(可以从 currentUser 检索,但有时根据情况是其他用户的详细信息。

到目前为止,我发现自己每当遇到上述需求时,都会执行两个查询:首先加载详细信息(例如姓名、电话、地址等),其次加载该用户的个人资料图像。

所以我最终得到了如下所示的嵌套调用:

let query = PFQuery(className: "_User")

query.whereKey("appUsername", equalTo: self.friendObject.username!)

query.findObjectsInBackgroundWithBlock { (results, error) -> Void in
let data = results as [PFObject]!
if(error == nil)
{
self.friendObject.name = data[0]["name"] as? String
self.friendObject.profilePic = data[0]["ProfilePic"] as? UIImage
self.nameLabel.text = self.friendObject.name
self.friendObject.objectId = data[0].objectId! as String
self.getProfilePicture(self.friendObject.username!) { (result)->Void in

self.profilePicImageView.image = result
}

}else{
print("Error retrieving user details - try again")
}
}

这是 getProfilePicture 函数的定义:

func getProfilePicture(username: String, completion: (result: UIImage) -> Void)
{
var tempImage:UIImage? = UIImage(named: "sample-qr-code.png")!
let query: PFQuery = PFQuery(className: "_User")
query.whereKey("appUsername", equalTo: username)
query.findObjectsInBackgroundWithBlock {
(objects:[PFObject]?, error:NSError?) -> Void in
for object in objects! {
if(object["ProfilePic"] != nil)
{
let imageFiles = object["ProfilePic"] as! PFFile
imageFiles.getDataInBackgroundWithBlock({
(imageData: NSData?, error: NSError?) -> Void in
if (error == nil) {
tempImage = UIImage(data:imageData!)!
let temp2Image: UIImage = Toucan(image: tempImage!).resize(CGSize(width: 100, height: 150)).maskWithEllipse(borderWidth: 3, borderColor: UIColor.whiteColor()).image
completion(result: temp2Image)
}
})
}else{
let invalidImage = UIImage(named: "Contacts-100.png")
completion(result: invalidImage!)
}
}
}
}

User解析类中的ProfilePic列是File类型。我如何优化这一点,以便我只进行一次调用来加载图像和详细信息(假设应尽可能减少请求)。

谢谢

最佳答案

使您的imageView成为PFImageView,然后您可以设置PFImageView的适当文件,例如self.friendObject.profilePic =数据[0][“个人资料图片”]为? PFFile 然后你可以执行 self.profilePicImageView.file = self.friendObject.profilePic 然后 self.profilePicImageView.loadInBackground

关于ios - Swift Parse - 嵌套调用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com