从Parse.com(Swift)检索数据

时间:2015-08-14 03:41:43

标签: swift parse-platform tableview custom-cell exc-bad-instruction

我正在尝试将在Parse.com上创建的对象中的数据提取到包含标签和图像的自定义单元格中。到目前为止我实现的代码运行但我的tableview仍然是空的,并在运行时显示以下错误。错误:线程1:Exc_BAD_INSTRUCTION(代码= EXC_1386_INVOP,子代码= 0x0)。有人可以解释为什么会发生这种情况我是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
                }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题是你可能已经在tableview中有单元格没有新的标签/图像。 您需要告诉程序在没有新类型输入的情况下插入一种文本。

在这种情况下,我已经有一个月的时间在一个项目上工作了,现在我开始在我的单元格中插入更多的标签,这就是弹出问题的地方,所以之前的单元格没有这些信息。 所以我只是告诉系统检查所有单元格,如果单元格没有所需的文本,它应该只输入一些占位符文本(在这种情况下="")。

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 = ""
    }

我希望这有帮助,我只解释了怎么做,我还没有告诉你在你的代码中这样做,但从我看到你应该在你声明的部分下输入代码" A方"