gpt4 book ai didi

swift - 快速查询解析带有指针的对象

转载 作者:行者123 更新时间:2023-11-30 10:06:37 25 4
gpt4 key购买 nike

我正在尝试使用解析中的指针进行查询。我有两个类(class)“Discover”和“DiscoveryDetails”。我想获取从发现类中选取的对象的发现详细信息。

探索级 enter image description here

DiscoveryDetails 类 - 以 discoveryID 作为指针。 enter image description here

发现对象显示在 DiscoveryTableView 中,在选择其中一项时,我想查询具有与 DiscoveryDetailsTableView 中该选择相关的 ID 的对象。

DiscoveryTableView 显示类中出现的对象,但 DiscoveryDetailsTableView 显示所有对象,而不是与我选择的单元格相关的对象。

这是我在 DiscoveryTableView 中的 didSelectRowAtIndexPath 代码:

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

tableView.deselectRowAtIndexPath(indexPath, animated: true)

let mainStoryboard = UIStoryboard(name: "Discovery", bundle: nil)
let discoveryDetailView = mainStoryboard.instantiateViewControllerWithIdentifier("discoveryDetailTVC") as! DiscoveryDetailTableViewController

let object = self.objectAtIndexPath(indexPath)
discoveryDetailView.titleString = object?.objectForKey("workoutName") as! String
discoveryDetailView.describtionString = object?.objectForKey("workoutDetails") as! String
discoveryDetailView.numberOfWorkouts = object?.objectForKey("numberOfWorkouts") as! Int
discoveryDetailView.imageFile1 = object?.objectForKey("image1") as! PFFile
discoveryDetailView.imageFile2 = object?.objectForKey("image2") as! PFFile
discoveryDetailView.imageFile3 = object?.objectForKey("image3") as! PFFile

let row = indexPath.row //we know that sender is an NSIndexPath here.
let selectedObj = objects![row] // some var where you hold your data
discoveryDetailView.varInDDT = selectedObj


self.navigationController?.pushViewController(discoveryDetailView, animated: true)

}

在我的 DiscoveryDetailsTableView 中,我有以下代码:

var titleString: String!
var describtionString: String!
var numberOfWorkouts: Int!
var imageFile1: PFFile!
var imageFile2: PFFile!
var imageFile3: PFFile!
var varInDDT : PFObject?

//MARK: Query for Table with the details
override func queryForTable() -> PFQuery {

let discoveryQuery = PFQuery(className: "DiscoveryDetails")
discoveryQuery.cachePolicy = .CacheElseNetwork
discoveryQuery.whereKey("discoveryID", equalTo: PFObject(withoutDataWithClassName: "Discovery", objectId: "\(varInDDT!.objectId!)"))
discoveryQuery.orderByDescending("createdAt")
return discoveryQuery

}

override func viewDidLoad() {
super.viewDidLoad()

//Header Display
let imagesArray = [imageFile1, imageFile2, imageFile3]
let imagePicked = randomIntergerInRange(0, high: imagesArray.count)

titleLabel.text = titleString.uppercaseString
self.subtitleLabel.text = describtionString
self.numberOfWorkoutsLabel.text = "\(numberOfWorkouts!) Workouts"

//Pick a random Image from the Images
imagesArray[imagePicked].getDataInBackgroundWithBlock({ (imageData, error) -> Void in
if error == nil
{
if let imageData = imageData
{
let image = UIImage(data:imageData)
self.backgroundImage.image = image
}
}
})

...

}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {

var discoveryDetailItemsCell:DiscoveryDetailTableViewCell! = tableView.dequeueReusableCellWithIdentifier("DiscoveryDetailTableViewCell") as? DiscoveryDetailTableViewCell

...

discoveryDetailItemsCell.titleLabel.text = object?.objectForKey("exerciseName") as? String
discoveryDetailItemsCell.titleLabel.textColor = UIColor.whiteColor()

discoveryDetailItemsCell.durationAndSetsLabel.text = "\((object?.objectForKey("durationOrSets"))!)"
discoveryDetailItemsCell.minAndSetLabel.text = "mins"


...

return discoveryDetailItemsCell

}

那里可能有类似的问题,但我没有找到任何答案,或者我可能没有清楚地看到我的错误。

感谢您提前提供的帮助。 :)

最佳答案

对于带有指针的查询,你必须使用这样的查询

let discoveryQuery = PFQuery(className: "DiscoveryDetails")
discoveryQuery.cachePolicy = .CacheElseNetwork
discoveryQuery.whereKey("discoveryID", equalTo: PFObject(withoutDataWithClassName: "Discovery", objectId: "\(varInDDT!.objectId!)"))
discoveryQuery.orderByDescending("createdAt")
return discoveryQuery

要下载详细信息,您必须至少将要下载的对象的 ID 从第一个 viewController 传递到第二个 viewController,或者您可以传递整个 PFObject

DiscoveryTableView

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("showDetail", sender: indexPath)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "showDetail"){ // define the segue Name
let controller = (segue.destinationViewController as! DiscoveryDetailTableViewController)
let row = sender!.row //we know that sender is an NSIndexPath here.
let selectedObj = discoveryObjects[row] // some var where you hold your data
controller.varInDDT = selectedObj
}
}

并在详细VC中定义PFObject的var

DiscoveryDetailTableViewController

var varInDDT : PFObject?

关于swift - 快速查询解析带有指针的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35584904/

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