Ios Swift-“一个;尝试将第0行插入节0,但更新后节0中只有0行;

Ios Swift-“一个;尝试将第0行插入节0,但更新后节0中只有0行;,ios,swift,xcode,uitableview,swift2.3,Ios,Swift,Xcode,Uitableview,Swift2.3,Xcode 8.1、Swift 2.3、iOS 10.1,我使用Firebase 我用firebase注册了通知。我正在尝试在uitableview上显示通知。viewDidLoad()成功连接firebase并获取值。但我无法列出传入的数据 首先,我得到了一个错误“CellForRowatineXpath不工作”。之后,我使用forRow&instition。但现在我得到了一个错误,我不知道这意味着什么 *** Terminating app due to uncaught exception

Xcode 8.1、Swift 2.3、iOS 10.1,我使用Firebase

我用firebase注册了通知。我正在尝试在uitableview上显示通知。viewDidLoad()成功连接firebase并获取值。但我无法列出传入的数据

首先,我得到了一个错误“CellForRowatineXpath不工作”。之后,我使用forRow&instition。但现在我得到了一个错误,我不知道这意味着什么

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to insert row 0 into section 0, but there are only 0 rows in section 0 after the update'
NoticeViewController.swift

import UIKit
import FirebaseDatabase
import FirebaseAuth
import FirebaseStorage

private let reuseIdentifier = "NoticeViewTable"

class NoticeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var aivLoading: UIActivityIndicatorView!
    @IBOutlet weak var noticeTableView: UITableView!

    var databaseRef = FIRDatabase.database().reference()
    var usersDict = NSDictionary()

    var noticesArray = [AnyObject]()
    var loggedInUser : AnyObject?



    @IBAction func didTapAddNotice(sender: AnyObject) {

        let mainStorboard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

        let viewController: UIViewController = mainStorboard.instantiateViewControllerWithIdentifier("AddNoticeView")
        self.presentViewController(viewController, animated: true, completion: nil)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        self.loggedInUser = FIRAuth.auth()?.currentUser

        self.aivLoading.startAnimating()
        self.databaseRef.child("notice").observeEventType(.Value, withBlock: { (snapshot) in

            self.usersDict = snapshot.value as! NSDictionary

            self.noticesArray = [AnyObject]()

            for (userId, details) in self.usersDict {

                let noticeImg = details.objectForKey("noticeImage1") as! String
                let profileImg = details.objectForKey("profileImage") as! String
                let profileName =  details.objectForKey("userName") as! String
                let wage = details.objectForKey("wage") as! String
                let noticeName = details.objectForKey("noticeName") as! String

                if(self.loggedInUser?.uid != userId as? String){
                    details.setValue(userId, forKey: "uId")
                    self.noticesArray.append(details)
                }

                self.noticeTableView?.reloadData()

                self.noticeTableView.insertRowsAtIndexPaths([NSIndexPath(forRow: 0, inSection: 0)], withRowAnimation: UITableViewRowAnimation.Automatic)

                self.aivLoading.stopAnimating()


            }

        }) {(error) in
            print(error.localizedDescription)
        }

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

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

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

        let cell: NoticeViewTableViewCell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! NoticeViewTableViewCell

        let profileImageURL = NSURL(string: self.noticesArray[indexPath.row]["profileImage"] as! String)
        let profileImageData = NSData(contentsOfURL: profileImageURL!)
        cell.profilePic.image = UIImage(data:profileImageData!)

        let noticeImageURL = NSURL(string: self.noticesArray[indexPath.row]["noticeImage!"] as! String)
        let noticeImageData = NSData(contentsOfURL: noticeImageURL!)
        cell.noticeImage.image = UIImage(data:noticeImageData!)


        //add a border and corner radius the images
        cell.profilePic.layer.masksToBounds = true
        cell.profilePic.layer.cornerRadius = cell.profilePic.frame.size.width/2.0
        cell.profilePic.layer.borderWidth = 1.5


        let profileName = (self.noticesArray[indexPath.row]["userName"] as? String)!
        cell.userName.text = profileName

        let noticeName = (self.noticesArray[indexPath.row]["noticeName"] as? String)!
        cell.noticeName.text = noticeName

        let wage = (self.noticesArray[indexPath.row]["wage"] as? String)!
        cell.wage.text = wage

        return cell

    }

}

你的代码中有很多错误。他们中的任何一个都可能导致坠机

  • 即使
    uid
    无效,也会在表视图中插入一行
  • details
    附加到数据源数组中,但插入到表视图的索引0中
  • 不要同时调用
    reloadData()
    insertrowsatindexpath
    。删除
    reloadData()
1)用导致错误的实际代码更新您的问题,并指出导致错误的确切行。2) 搜索错误。这已经讨论过很多次了。