无法从Parse表中检索数据

时间:2015-07-20 21:49:26

标签: swift parse-platform

我有一个自定义表视图控制器,我试图从Parse表中提取数据。虽然我能够将数据保存到此解析数据,但在使用相同的代码检索数据时会显示空白:

TVC代码:

import UIKit

class SavedNoteTableViewController: UITableViewController {

var noteObjects: NSMutableArray! = NSMutableArray()


override func viewDidLoad() {
    super.viewDidLoad()


}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    if (PFUser.currentUser() == nil) {



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

    }

}

func fetchAllObjectsFromLocalDatastore() {

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

    query.fromLocalDatastore()

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


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

        if (error == nil) {

            var temp: NSArray = objects as NSArray!


            self.noteObjects = temp.mutableCopy() as! NSMutableArray

            self.tableView.reloadData()

        }else {

            println(error!.userInfo)

        }

    }

}


func fetchAllObjects() {

    PFObject.unpinAllObjectsInBackgroundWithBlock(nil)

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

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

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

        if (error == nil) {


            PFObject.pinAllInBackground(objects, block: nil)

            self.fetchAllObjectsFromLocalDatastore()


        }else {

            println(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.noteObjects.count

}

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

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

    cell.tickerLabel?.text = object["ticker"] as? String

    return cell
}


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


    /*
    var upcoming: AddNoteTableViewController = segue.destinationViewController as! AddNoteTableViewController

    if (segue.identifier == "editNote") {

    let indexPath = self.tableView.indexPathForSelectedRow()!

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

    upcoming.object = object;

    self.tableView.deselectRowAtIndexPath(indexPath, animated: true)

    }
    */
}



// Override to support conditional editing of the table view.
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    // Return NO if you do not want the specified item to be editable.
    return true
}



// Override to support editing the table view.
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    if editingStyle == .Delete {

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



        // Delete the row from the data source
        let objectToDelete = object
        objectToDelete.deleteInBackgroundWithBlock {
            (success: Bool, error: NSError?) -> Void in
            if (success) {
                // Force a reload of the table - fetching fresh data from Parse platform
                // self.loadObjects()
                // self.tableView.reloadData()
                self.fetchAllObjectsFromLocalDatastore()
                self.fetchAllObjects()

            } else {
                // There was a problem, check error.description
            }
        }




    }

}

}

自定义表格视图单元格的代码:

import UIKit

class SavedNoteTableViewCell: UITableViewCell {

@IBOutlet weak var tickerLabel: UILabel!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

没有出现错误消息,尽管数据库中有记录,但只显示空白。任何建议表示赞赏!

1 个答案:

答案 0 :(得分:0)

我认为你走的是正确的轨道,但是当你到达那个代码块时我的解析经验

  query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError) -> Void in
   {
    if error == nil {

      if let Newobjects = objects as! [PFObject]{

             // then you could do whatever you want with the new check objects
            // put it in your array do 

       }

     }

   }