gpt4 book ai didi

ios - 如何获取具有所有(递归)子项的 PFUser 对象

转载 作者:行者123 更新时间:2023-11-29 01:52:57 25 4
gpt4 key购买 nike

我有以下结构:

我的用户表有一个名为 experienceArray 的字段,它只是指向另一个名为 experience 的表的指针数组。每个 experience 对象都有一个指向另一个表 Sport 的指针。 Sport 只是一个包含标题(字符串)的简单表格。我试图在表格 View 中显示每个对象的标题。不幸的是,我在我的 tableview 委托(delegate)中遇到异常,我在其中将标题值分配给我的 tableview 单元格标签。

var object : PFObject = self.chosenSports[indexPath.row]["sport"] as! PFObject

内容如下:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“键“title_en”没有数据。在获取其值之前调用 fetchIfNeeded。'

这条消息对我来说绝对有意义——它没有获取最内部的子对象,只有它们的 objectId。

这是我的做法:

var query = PFUser.query()
query!.includeKey("experienceArray")
query!.includeKey("experienceArray.Sport")
query!.includeKey("experienceArray.Sport.title_en")
query!.whereKey("objectId", equalTo: PFUser.currentUser()!.objectId!)
query!.findObjectsInBackgroundWithBlock { (result: [AnyObject]?, error:NSError?) -> Void in
println("sports result: \(result)")
var res = result as! NSArray
var user = res[0]
self.chosenSports = user["experienceArray"] as! NSMutableArray
self.sportsTableView.reloadData()
}

我将如何更改我的代码以接收 PFUser 对象及其所有子对象中包含的所有信息?

最佳答案

你能试试这个并告诉我它是否有效:

PFUser.currentUser().fetchIfNeeded { user, error in
if error == nil && user != nil {
if let sports = user["experienceArray"] as? [PFObject] {
let query = PFQuery(className: "Sport") // Change to correct name.
query.whereKey("objectId", containedIn: sports.map { $0.objectId })
query.findObjectsInBackgroundWithBlock { (results, error) -> Void in
// TODO: Use results
}
}
}
}

当然,因为我不知道你是如何将东西保存到 iVars 中的,所以我将代码包含在 block 中,但你可以简单地将它分配给一个 ivar。这应该有效。

编辑:更改代码以仅发出 2 个请求。另请注意,代码不处理错误,但这应该很容易做到。

关于ios - 如何获取具有所有(递归)子项的 PFUser 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211721/

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