EXC错误指令错误Swift

时间:2017-07-14 03:32:19

标签: ios swift exc-bad-instruction

我有一个问题,我点击一个tableviewcell,它应该填充一个详细视图控制器但是当我点击单元格时会弹出这个错误。

import UIKit
import Former
import Parse
import MapKit
import Material
import CoreLocation

class EventDetailViewController: FormViewController, MKMapViewDelegate, CLLocationManagerDelegate {

// MARK: Public

var event: PFObject?
var organizer: PFUser?
var currentUserStatus = 2
var confirmedUsers = [PFObject]()
var maybeUsers = [PFObject]()
var invitedUsers = [PFObject]()
var confirmedUserIDs = [String]()
var maybeUserIDs = [String]()
var invitedUserIDSs = [String]()

// MARK: Public

override func viewDidLoad() {
    super.viewDidLoad()

    // Configure UI
    title = "Event Details"
    tableView.contentInset.top = 0
    tableView.contentInset.bottom = 30

    navigationItem.leftBarButtonItem = UIBarButtonItem(image: Icon.cm.close, style: .plain, target: self, action: #selector(cancelButtonPressed))

    organizer = event?.object(forKey: PF_EVENTS_ORGANIZER) as? PFUser
    organizer!.fetchInBackground { (user: PFObject?, error: Error?) in
        if error == nil {
            self.insertEventDetail()
            for pointer in (self.event?.object(forKey: PF_EVENTS_CONFIRMED) as! [PFUser]) {
                pointer.fetchInBackground(block: { (user: PFObject?, error: Error?) in
                    if error == nil {
                        if user?.objectId == PFUser.current()?.objectId {
                            self.currentUserStatus = 0
                            self.choiceRow.configure(handler: {
                                $0.selectedIndex = self.currentUserStatus
                            })
                        }
                        self.confirmedUsers.append(user!)
                        self.confirmedUserIDs.append(user!.objectId!)

                        if pointer == (self.event?.object(forKey: PF_EVENTS_CONFIRMED) as! [PFUser]).last {
                            // All users have been downloaded
                            self.insertUsers(users: self.confirmedUsers, header: "Going", section: 2)
                            if self.currentUserStatus == 0 {
                                self.former.insertUpdate(rowFormer: self.newRow, toIndexPath: IndexPath(row: 0, section: 2), rowAnimation: .fade)
                            }
                        }
                    }
                })
            }
            for pointer in (self.event?.object(forKey: PF_EVENTS_MAYBE) as! [PFUser]) {
                pointer.fetchInBackground(block: { (user: PFObject?, error: Error?) in
                    if error == nil {
                        if user?.objectId == PFUser.current()?.objectId {
                            self.currentUserStatus = 1
                            self.choiceRow.configure(handler: {
                                $0.selectedIndex = self.currentUserStatus
                            })
                        }
                        self.maybeUsers.append(user!)
                        self.maybeUserIDs.append(user!.objectId!)

                        if pointer == (self.event?.object(forKey: PF_EVENTS_MAYBE) as! [PFUser]).last {
                            // All users have been downloaded
                            var section = 3
                            if self.former.sectionFormers.count < 2 {
                                section = 2
                            }
                            self.insertUsers(users: self.maybeUsers, header: "Maybe", section: section)
                            if self.currentUserStatus == 1 {
                                self.former.insertUpdate(rowFormer: self.newRow, toIndexPath: IndexPath(row: 0, section: section), rowAnimation: .fade)
                            }
                        }
                    }
                })
            }
            for pointer in (self.event?.object(forKey: PF_EVENTS_INVITE_TO) as! [PFUser]) {
                pointer.fetchInBackground(block: { (user: PFObject?, error: Error?) in
                    if error == nil {
                        self.invitedUsers.append(user!)
                        if pointer == (self.event?.object(forKey: PF_EVENTS_INVITE_TO) as! [PFUser]).last {
                            // All users have been downloaded
                            var section = 4
                            if self.former.sectionFormers.count == 2 {
                                section = 3
                            } else if self.former.sectionFormers.count < 2 {
                                section = 2
                            }
                            self.insertUsers(users: self.invitedUsers, header: "Invited", section: section)
                        }
                    }
                })
            }
            if (self.event?.object(forKey: PF_EVENTS_CONFIRMED) as! [PFUser]).count == 0 {
                self.insertEmpty(header: "Confirmed")
            }
            if (self.event?.object(forKey: PF_EVENTS_MAYBE) as! [PFUser]).count == 0 {
                self.insertEmpty(header: "Maybe")
            }
            if (self.event?.object(forKey: PF_EVENTS_INVITE_TO) as! [PFUser]).count == 0 {
                self.insertEmpty(header: "Invited")
            }
        }
    }

    if organizer?.objectId == PFUser.current()?.objectId {
        navigationItem.rightBarButtonItem = UIBarButtonItem(image: Icon.cm.edit, style: .plain, target: self, action: #selector(editButtonPressed))
    }
}

// MARK: Private

private func insertUsers(users: [PFObject], header: String, section: Int) {
    var userRows = [LabelRowFormer<ProfileImageCell>]()
    for user in users {
        if user.objectId != PFUser.current()?.objectId {
            userRows.append(LabelRowFormer<ProfileImageCell>(instantiateType: .Nib(nibName: "ProfileImageCell")) {
                $0.iconView.backgroundColor = MAIN_COLOR
                $0.iconView.layer.borderWidth = 1
                $0.iconView.layer.borderColor = MAIN_COLOR?.cgColor
                $0.iconView.image = UIImage(named: "profile_blank")
                $0.iconView.file = user[PF_USER_PICTURE] as? PFFile
                $0.iconView.loadInBackground()
                $0.titleLabel.textColor = UIColor.black
                }.configure {
                    $0.text = user[PF_USER_FULLNAME] as? String
                    $0.rowHeight = 60
                }.onSelected { [weak self] _ in
                    self?.former.deselect(animated: true)
                    let profileVC = PublicProfileViewController()
                    profileVC.user = user
                    self?.navigationController?.pushViewController(profileVC, animated: true)
            })
        }
    }
    self.former.insert(sectionFormer: (sectionFormer: SectionFormer(rowFormers: userRows).set(headerViewFormer: TableFunctions.createHeader(text: header))) as! SectionFormer, toSection: section)
    self.former.reload()
}

private func insertEmpty(header: String) {
    let zeroRow = LabelRowFormer<ImageCell>(instantiateType: .Nib(nibName: "ImageCell")) { _ in
        }.configure {
            $0.rowHeight = 0
    }

以下是该代码向我提供EXC错误指示的地方

self.former.append(sectionFormer: (sectionFormer: SectionFormer(rowFormer: zeroRow).set(headerViewFormer: TableFunctions.createHeader(text: header))) as! SectionFormer)
 self.former.reload()
}

0 个答案:

没有答案