简体   繁体   中英

Retrieving data from Parse.com (Swift)

I am attempting to fetch data from an object created on Parse.com into a custom cell that contains labels and images. The code I implemented thus far runs but my tableview remains empty and at runtime displays the following error. ERROR: Thread 1: Exc_BAD_INSTRUCTION (Code =EXC_1386_INVOP, subcode=0x0). Can someone please explain why this is occurring I am new to programming in Xcode.

@objc
protocol ViewControllerDelegate {
optional func toggleLeftPanel()
optional func toggleRightPanel()
optional func collapseSidePanels()
}
class ViewController: UITableViewController, UITableViewDataSource,        UITableViewDelegate
{
    var delegate: ViewControllerDelegate?
    var arrayOfParties: [Information] = [Information]()
    @IBAction func menuTapped(sender: AnyObject) {
        delegate?.toggleLeftPanel?()
    }
    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.loadData()
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        //return self.arrayOfParties.count
        return self.arrayOfParties.count
    }

    //Function to adjust the height of the custom cell
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {
    return 230
    }
    override func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell: CustomCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomCell
        let party = arrayOfParties[indexPath.row]
        cell.setCell(party.partyName, promoterLabelText: party.promoterName, partyCostLabelText: party.partyCost, partyFlyerUIImage: party.flyerImage, promoterUIImage: party.promoterImage)
        return cell
    }
    func loadData()
    {
        var  findDataParse:PFQuery = PFQuery(className: "flyerDataFetch")
        findDataParse.findObjectsInBackgroundWithBlock{
            (objects: [AnyObject]?, error: NSError?)->Void in
            if (error == nil){
                for object in objects!
                {
                    var party1 =  Information(partyName: (object["partyName"] as? String)!, promoterName: (object["promoterName"] as? String)!, partyCost: (object["partyCost"] as? String)!, flyerImage: "", promoterImage: "")
                    self.arrayOfParties.append(party1)
                }
            }
            else {
                   // something went wron
                }
        }
    }
}

The problem is that you probably have cells in the tableview already that don't have the new labels/images. You need to tell the program to insert a type of text where there is no input of the new type.

In this case I have already since a month back worked on a project, and now I started inserting more labels into my cell, thats where the problem pops up, so the previous cells don't have this information. So I just tell the system to check all cells, if a cell doesn't have the needed text, it should just enter some placeholder text (in this case = "").

if let content = text.objectForKey("Content") as? String {

        cell.TextView.alpha = 1.0
        cell.TextView.text = content
    }
    else{
        cell.TextView.alpha = 1.0
        cell.TextView.text = ""
    }

I hope this helps, I have only explained how to do, I haven't really told you were in your code to do it, but from what I see you should input the code right under the part where you declare "Party1".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM