ios - 从 Parse 中的指针列获取数据(iOS)

标签 ios swift parse-platform

我看到了以下问题。 Get data from a pointer's row in Parse (ios)

以及其他各种问题,但仍然无法弄清楚。

我在 Parse 中有一门名为“水管工”的类(class) enter image description here

如您所见,“practiceArea”是指向名为“PracticeArea”的类的指针(注意类中的大写 P) enter image description here 因此,从这里我想提取相应指针的相应“标题”列值。我该怎么做?

到目前为止,这是我的代码

//
//  Directory.swift
//  plumber_main
//
//  Created by James on 13/4/16.
//  Copyright © 2016 James. All rights reserved.
//

import UIKit
import Parse

class Directory: UITableViewController {




    @IBOutlet var plumbersDirectory: UITableView!

    var profImages = [PFFile]()
    var plumberName = [String]()
    var plumberRate = [NSNumber]()
    var plumberPracArea = [PFObject]()
    var plumberExp = [String]()



    var refresher: UIRefreshControl!



    func refresh()
    {
        let query_one = PFQuery(className: "PracticeArea")
        query_one.includeKey("title")
        let query = PFQuery(className: "plumber")
        query.includeKey("practiceArea")
        query.orderByDescending("createdAt")

        query.findObjectsInBackgroundWithBlock(

            {
                (listll: [PFObject]?, error: NSError?) -> Void in

                if error == nil {
                    // The find succeeded.
                    print("Successfully retrieved \(listll!.count) names of the plumbers.")
                    // Do something with the found objects
                    if let objects = listll {
                        for object in objects {
                            print(object)

                            self.profImages.append(object["photo"] as! PFFile)
                            self.plumberName.append(object["name"] as! String)
                            self.plumberExp.append(object["expLevel"] as! String)
                            self.plumberPracArea.append(object["practiceArea"] as! PFObject)
                            print(object ["practiceArea"].objectId)
                            self.plumberRate.append(object["ratePerHr"] as! NSNumber)


                            // print(object["plumber_Name"] as! String )
                            // self.plumbersname.append(object["plumber_Name"] as! String)
                            //self.lblName.text = object["plumber_Name"] as? String

                        }
                        self.plumbersDirectory.reloadData()
                    }
                    print(self.plumberName.count)
                } else {
                    // Log details of the failure
                    print("Error: \(error!) \(error!.userInfo)")
                }
                self.tableView.reloadData()
                self.refresher.endRefreshing()
        })

    }





    override func viewDidLoad() {
        super.viewDidLoad()

        refresher = UIRefreshControl()
        refresher.attributedTitle = NSAttributedString(string: "Pull to refrehsh")
        refresher.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
        self.tableView.addSubview(refresher)

        refresh()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
       return plumberName.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let plumbercell: plumber_Directory_Cell = tableView.dequeueReusableCellWithIdentifier("plumberlistproto") as! plumber_Directory_Cell


        plumbercell.name.text = plumberName[indexPath.row]
        plumbercell.exp.text = plumberExp[indexPath.row]



        plumbercell.pracArea.text = String(plumberPracArea[indexPath.row])
        plumbercell.price.text = String (plumberRate[indexPath.row])
        profImages[indexPath.row].getDataInBackgroundWithBlock{(imageData: NSData?, error: NSError?) -> Void in
            if imageData != nil {
                let image = UIImage(data: imageData!)
                plumbercell.mini_image.image = image
            }
            else
            {
                print(error)
            } }

        //cell.textLabel?.text = plumbersname[indexPath.row]

        return plumbercell
    }


    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    {
        print(indexPath.row)
    }



}

最佳答案

试试这个

    func refresh()
       {

          let query = PFQuery(className: "PracticeArea")
          query.includeKey("practiceArea")
          query.orderByDescending("createdAt")

          query.findObjectsInBackgroundWithBlock( {
                (listll: [PFObject]?, error: NSError?) -> Void in

                if error == nil {
                   // The find succeeded.
                   print("Successfully retrieved \(listll!.count) names of the plumbers.")
                   // Do something with the found objects
                   if let objects = listll {
                      self.plumberName = objects
                    } else {
                      self.plumberName.removeAllObjects()
                   }
                      self.plumbersDirectory.reloadData()

                   print(self.plumberName.count)
                } else {
                   // Log details of the failure
                   print("Error: \(error!) \(error!.userInfo)")
                }
          })

       }

       override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
          let plumbercell: plumber_Directory_Cell = tableView.dequeueReusableCellWithIdentifier("plumberlistproto") as! plumber_Directory_Cell

          let object = plumberName[indexPath.row]

          plumbercell.name.text = object["name"]
          plumbercell.exp.text = object["expLevel"]
          let practiceArea = object["practiceArea"]
          plumbercell.pracArea.text = practiceArea["title"]



          plumbercell.pracArea.text = String(plumberPracArea[indexPath.row])
          plumbercell.price.text = String (plumberRate[indexPath.row])
          profImages[indexPath.row].getDataInBackgroundWithBlock{(imageData: NSData?, error: NSError?) -> Void in
             if imageData != nil {
                let image = UIImage(data: imageData!)
                plumbercell.mini_image.image = image
             }
             else
             {
                print(error)
             } }

          //cell.textLabel?.text = plumbersname[indexPath.row]

          return plumbercell
       }

关于ios - 从 Parse 中的指针列获取数据(iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795674/

相关文章:

parse-platform - 对 ParseUser 或 ParseObject 使用 saveEventually() 而不是 save() 或 saveInBackground()

iphone - 我如何将 predicateWithFormat 用于两个不同的类

ios - 是否有官方方式在 Apple Watch 和 iPhone 之间传递数据?

ios - Swift:初始化程序内存问题

ios - 解析: No Session is created when new Facebook user signs up

ios - 在不使用 PrepareForSegue 的情况下在 segue 之间传递数据

javascript - 集群渲染时缩放会导致 map 卡住

ios - 如何创建向后兼容 iOS 5.0 的新 Xcode 5 项目? - 出现缺少 Storyboard错误

IOS swift 我如何检查删除 super View 或在 subview 中关闭它

swift - 如何在 Swift 中进行数字相乘?