gguillaume
gguillaume

Reputation: 1

UITableView and Parse Data

I am having issues setting with Parse data and a UITableView. Everytime I run the application, whether on the simulator or my phone, the app stops working and the only thing the console shows is (lldb). When checking the debugger, only following two lines of code are highlighted.

findTimelineData.findObjectsInBackgroundWithBlock{

and

self.timelineData = array as NSMutableArray

Both have the error: Thread 1: EXC_BREAKPOINT (code=EXC_I386_BPT,subcode=0x0) and im not quite sure what that means...

Here are snippets of my code:

override func viewDidAppear(animated: Bool)
{
    self.loadData()
}

func loadData()
{
    timelineData.removeAllObjects()

    var findTimelineData : PFQuery = PFUser.query()
    findTimelineData.findObjectsInBackgroundWithBlock{
        (objects: [AnyObject]!, error: NSError!)-> Void in
        if error == nil
        {
            println("No error")

            if let object = objects as? [PFObject!]
            {
                for object in objects
                {
                   self.timelineData.addObject(object)
                }
            }

            let array : NSArray = self.timelineData.reverseObjectEnumerator().allObjects
            self.timelineData = array as NSMutableArray

            self.tableView.reloadData()
        }

    }
}

and these would be the cells that i'm trying to load, but the code never gets this far...

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    println("loading cell")

    let postCell : LocationTableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as LocationTableViewCell

    let post : PFObject = self.timelineData.objectAtIndex(indexPath.row) as PFObject

    postCell.imageView.image = post.objectForKey("currentLocation") as? UIImage
    postCell.userInfo.text = post.objectForKey("FirstLastName") as? String

    // Configure the cell...

    return postCell
}

for the full code: http://pastebin.com/MN7qcFhq

Upvotes: 0

Views: 525

Answers (3)

kareem
kareem

Reputation: 933

Hey Buddy I got you on this one. I had the same issues but I got help and got it figured out.

This is your Load Function

Try this

  func loadData(){
        timelineData.removeAll(keepCapacity: false)

            var findTimelineData:PFQuery = PFQuery(className:"Sweets")
            findTimelineData.findObjectsInBackgroundWithBlock
                {
                    (objects:[AnyObject]! , error:NSError!) -> Void in
                    if error == nil
                    {
                        self.timelineData = objects.reverse() as [PFObject]


                        //let array:NSArray = self.timelineData.reverseObjectEnumerator().allObjects

                        println(objects)

                       // self.timelineData = array as NSMutableArray


                        self.tableView.reloadData()
                }
            }
    }

Then go to your

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

And change

let sweet:PFObject = self.timelineData.objectAtIndex(indexPath.row) as PFObject

To This

  let sweet: PFObject = self.timelineData[indexPath.row] as PFObject

Whats going on is you are mixing some Obj C with Swift , the code you are following was probably written in Beta so make sure you go back and learn the differences. If you are still having problems check all your conditions if(error != nil) should not be in your code.

Upvotes: 0

Gary Zamorano
Gary Zamorano

Reputation: 66

this worked for me:

in your code just only replace

self.timelineData = array as NSMutableArray

to

self.timelineData = NSMutableArray(array: array)

Upvotes: 1

mbogh
mbogh

Reputation: 1361

Aren't you missing an s in:

if let object = objects as? [PFObject!]
{
    for object in objects
    {
        self.timelineData.addObject(object)
    }
}

Should be:

if let objects = objects as? [PFObject!]
{
    for object in objects
    {
        self.timelineData.addObject(object)
    }
}

Upvotes: 0

Related Questions