使用Swift 2中的Parse进行数据检索

时间:2015-11-12 21:55:10

标签: ios swift parse-platform

我这样做是为了获取数据并在表格视图中显示它 但它没有显示任何东西。

我使用了这段代码:

import UIKit
import Parse
import Bolts

class Parsedata: UIViewController, UITableViewDelegate, UITableViewDataSource {
    //@IBOutlet var NTableView: UITableView!

    @IBOutlet var NTableView: UITableView!
    var NArray:[String] = [String]()




    override func viewDidLoad() {
        super.viewDidLoad()



        // Do any additional setup after loading the view, typically from a nib.

        self.NTableView.delegate = self
        self.NTableView.dataSource = self


        // retrieve notification from parse
        self.RetrieveN()
        NSLog("Done with it")

    }

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

    func RetrieveN () {

        //create a pfquery
        var query:PFQuery = PFQuery(className: "Notification")

        //call findobject in background
        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

            //clear the Narray

            self.NArray = [String]()

            //loop through the objects array
            for Nobject in objects!{

                //retrieve the text column value of each PFobject
                let Ntext:String? = (Nobject as! PFObject) ["Text"] as? String


                // assign it into your Narray

                if Ntext != nil {
                self.NArray.append(Ntext!)

                }

            }

            if error == nil {
                // The find succeeded.
                print("Successfully retrieved \(objects!.count) Notifications.")}
           //reload the table view
            self.NTableView.reloadData()
            }
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = self.NTableView.dequeueReusableCellWithIdentifier("NCell") as UITableViewCell?

        cell?.textLabel?.text = self.NArray[indexPath.row]

        return cell!

    }


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return NArray.count
    }
}

它运行正常,因为它显示在LOG容器上检索到3个对象。

2 个答案:

答案 0 :(得分:1)

除非您的代码多于此处发布的代码,否则您还需要实施numberOfSectionsInTableView并返回1

答案 1 :(得分:0)

我刚刚学会了如何自己动手,这就是如何从解析中加载数据并将其保存为NSMutableArray然后使用该数据填充表视图。

let NArray : NSMutableArray = NSMutableArray() 

然后您可以使用您使用

创建的查询
var query:PFQuery = PFQuery(className: "Notification")

query.findObjectsInBackgroundWithBlock( { (AnyObject objects, NSError error) in
        if error == nil {
            self.NArray = NSMutableArray(array: objects!)
            self.NTableView.reloadData()
        } else {
          print(error?.localisedDescription)
    })

这会将所有内容加载到变量NArray中,然后可以在tableView函数中使用indexPath。 tableView cellForRowAtIndexPath中的那行代码将是

cell?.textLabel?.text = self.NArray[indexPath.row] //you may have to cast this as? String

就像我说这是我加载数据的方式,我使用它来加载PFUser用户名,个人资料图片等,并在自定义表格视图单元格中显示它们。 您可能需要稍微调整这些方法,但基本方法是