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

标签 swift parse-platform tableview

我正在尝试使用解析中的指针进行查询。我有两个类(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/

相关文章:

初始化函数中的 Swift 嵌套类型

csv - 使用 DataFX 填充 JavaFX TableView

swift - 使用 commitEditingStyle 删除行和部分

xcode - 如何使 NSViewController 在 Xcode 中位于最顶层?

macos - 如何为嵌套的 [NSObject : AnyObject] dictionaries? 赋值

ios - 在 WKWebView 中检测 Youtube 播放按钮 Action

android - 为 android 的 parse.com 数据库上的列读取和检索所有行的数据

ios - 如何从 iOS 中的 Parse 获取推送通知记录?

ios - 解析 : Facebook user unlink and login again creates two user table entries

objective-c - 我可以对表格进行编程使其看起来像表格吗