从Swift中的Parse中拉出对象

时间:2015-06-20 15:25:13

标签: ios swift parse-platform local-storage

现在已经解决了,代码是正确的,并且与在Parse中创建的新类完美配合。

我正在尝试从Parse中提取对象并将它们固定到本地存储,然后将对象拉入表格视图。查询似乎是问题,我已经遵循了许多教程和阅读文档,我相信我做的是正确的。

查询肯定与Parse数据库匹配,并且指向数据库的链接肯定存在,因为我能够登录并创建帐户。

打印查询结果打印..

从本地存储成功检索0个作业。

从数据库成功检索0个作业。 代码如下

import UIKit
import Parse


class JobsTableViewController: UITableViewController, PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate {

    var jobObjects: NSMutableArray! = NSMutableArray()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.refreshControl?.addTarget(self, action: "handleRefresh:", forControlEvents: UIControlEvents.ValueChanged)
    }

    // Mark: When view appears, if a user exists run functions 
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        if (PFUser.currentUser() == nil) {
            self.performSegueWithIdentifier("checkLogged", sender: self)

        } else {
            self.fetchAllObjectsFromLocalDatastore()
            self.fetchAllObjects()
        }
    }

    // Mark: Fetch all objects from local storage
    func fetchAllObjectsFromLocalDatastore() {

        var query: PFQuery = PFQuery(className: "Jobs")

        query.fromLocalDatastore()

        query.whereKey("Attendants", equalTo: PFUser.currentUser()!.username!)

        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

            if error == nil {
                // The find succeeded.
                println("Successfully retrieved \(objects!.count) jobs from local storage.")
                // Do something with the found objects
                if let objects = objects as? [PFObject] {
                    for object in objects {
                        println(object.objectId)
                    }
                }
            } else {
                // Log details of the failure
                println("Error: \(error!) \(error!.userInfo!)")
            }

        }

    }
    // Mark: Fetch all objects from Parse.
    func fetchAllObjects() {

        PFObject.unpinAllObjectsInBackgroundWithBlock(nil)

        var query: PFQuery = PFQuery(className: "Jobs")

        query.whereKey("Author", equalTo: PFUser.currentUser()!.username!)

        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

            if error == nil {
                // The find succeeded.
                println("Successfully retrieved \(objects!.count)  jobs from database.")
                // Do something with the found objects
                if let objects = objects as? [PFObject] {
                    for object in objects {
                        println(object.objectId)
                    }
                }
            } else {
                // Log details of the failure
                println("Error: \(error!) \(error!.userInfo!)")
            }   
        }
    }

    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 Potentially incomplete method implementation.
        // Return the number of sections.
        return 1
    }

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


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! EventsTableViewCell

        var object: PFObject = self.jobObjects.objectAtIndex(indexPath.row) as! PFObject

        cell.titleLabel?.text = object["JobName"] as? String
        cell.mainTextLabel?.text = object["Description"] as? String

        return cell
    }

    func handleRefresh(refreshControl: UIRefreshControl) {
        // Do some reloading of data and update the table view's data source
        // Fetch more objects from a web service, for example...

        // Simply adding an object to the data source for this example


        self.tableView.reloadData()
        refreshControl.endRefreshing()
    }
}

0 个答案:

没有答案