Ios Swift解析-嵌套调用问题
在我的应用程序中,我需要在不同的视图控制器中加载用户详细信息。我加载的详细信息不一定是当前登录的用户的详细信息(可以从currentUser检索,但有时是其他用户的详细信息,具体取决于场景) 到目前为止,每当我遇到上述需求时,我都会进行两次查询:第一次是加载详细信息(例如姓名、电话、地址等),第二次是加载该用户的个人资料图像 因此,我以一个嵌套调用结束,如下所示:Ios Swift解析-嵌套调用问题,ios,swift,parse-platform,Ios,Swift,Parse Platform,在我的应用程序中,我需要在不同的视图控制器中加载用户详细信息。我加载的详细信息不一定是当前登录的用户的详细信息(可以从currentUser检索,但有时是其他用户的详细信息,具体取决于场景) 到目前为止,每当我遇到上述需求时,我都会进行两次查询:第一次是加载详细信息(例如姓名、电话、地址等),第二次是加载该用户的个人资料图像 因此,我以一个嵌套调用结束,如下所示: let query = PFQuery(className: "_User") query.whereKey("appUserna
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!)
}
}
}
}
用户解析类中的ProfilePic列是文件类型。我如何优化它,以便只执行一次调用来加载图像和详细信息(考虑到请求应该尽可能地最小化)
谢谢,将您的
imageView
设置为PFImageView
,然后您可以设置PFImageView
的相应文件,如self.friendObject.profilePic=data[0][“profilePic”]作为?PFFile
,然后您可以执行self.profilePicImageView.file=self.friendObject.profilePic
,然后执行self.profilePicImageView.loadInBackground
,loadInBackground不会触发请求?如果您所说的请求指的是一个将计入解析请求的请求,则是的,但方法也是如此你已经展示了。是的,确实如此,这就是为什么我想知道是否有一种方法可以减少请求…我在你的建议中看到的是一种不同的方法,而不是最小化请求。没有请求是无法做到这一点的,是的,我展示的方法是一种不同的方法,但它也比y的方法更安全、更优化您已经编写了。谢谢您分享我将使用的编写良好的代码,但这真的很不幸,没有其他方法可以解决。我非常担心请求的限制