Ios 错误:致命错误:索引超出范围xcode swift 2

Ios 错误:致命错误:索引超出范围xcode swift 2,ios,xcode,swift,swift2,Ios,Xcode,Swift,Swift2,我不太懂英语。İ试着用代码解释这个错误 DBContextDelagate import Foundation import UIKit import Parse @objc protocol DBContextDelegate { optional func SingUpResponse(result : Bool) optional func LoginResponse(result : Bool) optional func GetUsersInfoRespons

我不太懂英语。İ试着用代码解释这个错误

DBContextDelagate

import Foundation
import UIKit
import Parse

@objc protocol DBContextDelegate {
    optional func SingUpResponse(result : Bool)
    optional func LoginResponse(result : Bool)
    optional func GetUsersInfoResponse(result : AnyObject)
    optional func GetUsersInfo(result : Bool)
    optional func GetDataResponse(result : Bool)
}

class DBContext : UIViewController{


    var delegate : DBContextDelegate?

    func SingUp(user : User) {
        let pfUser = PFUser()
        pfUser.username = user.userUserName
        pfUser.password = user.userPassword
        pfUser.email = user.userEmail
        pfUser["fullname"] = user.userFullName


        let profilePhotoData = UIImageJPEGRepresentation(user.userProfilePhoto, 0.5)
        let profilePhotoFile = PFFile(name: "profilePhoto.jpg", data: profilePhotoData!)
        pfUser["profilePhoto"] = profilePhotoFile


        pfUser.signUpInBackgroundWithBlock { (success:Bool, error:NSError?) -> Void in

            if  (error != nil) {
                self.delegate?.SingUpResponse!(false)
                print(error)
            }else {
                self.delegate?.SingUpResponse!(true)

            }
        }

    }

    func Login(user:User){

            PFUser.logInWithUsernameInBackground(user.userUserName, password:user.userPassword) {
                (user: PFUser?, error: NSError?) -> Void in
                if user != nil {
                    self.delegate?.LoginResponse!(true)
                } else {
                    self.delegate?.LoginResponse!(false)
                }
            }
        }

    func GetUsersInfo(){

        var userArray = Array<UserInfo>()

        let query = PFUser.query()
        query!.findObjectsInBackgroundWithBlock {
            (objects:[PFObject]?, error:NSError?) -> Void in

            if error == nil {

            if let objects = objects {

                for object in objects {
                    let user = UserInfo()

                    user.userID = object.objectId!
                    user.userUserName = object["username"] as? String
                    user.userFullName = object["fullname"] as? String
                    user.userEmail = object["email"] as? String

                    let userPhoto = object["profilePhoto"] as! PFFile
                    userPhoto.getDataInBackgroundWithBlock { (data:NSData?, error:NSError?) -> Void in
                        user.userProfilePhoto = UIImage(data: data!)!
                    }

                    userArray.append(user)
                    print(userArray.count)

                }
                self.delegate?.GetUsersInfoResponse!(userArray)
                }
                self.delegate?.GetDataResponse!(true)
            } else {
                self.delegate?.GetDataResponse!(false)
            }
        }

    }
}

我完全没有注意到您返回的是一个补充视图,而不是一个正常的单元格。将为每个部分返回这些视图。由于即使数组为空,您的
numberOfSectionsInCollectionView
仍返回1,因此当为您承诺存在的1个节调用
collectionView(collectionView:ViewForSupplmentalElementOfKind:atIndexPath)
方法时,您会遇到崩溃

解决方案可能是这样做:

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return userInfoArray.count
}
此外,请确保在更改基础数据后重新加载集合视图:

func GetUsersInfoResponse(result: AnyObject) {
    userInfoArray = result as! [UserInfo]
    collectionView?.reloadData()
}

这是大量的代码,阅读和理解它没有乐趣。所以你仍然需要告诉我们更多的信息:这个错误发生在哪里?您试过调试它吗?另外,您得到的确切错误消息是什么?我在homeVC Collection View.swif类中获取错误消息。和//我对这行索引超出范围有问题让user=userInfoArray[indexPath.row]抱歉,我知道我应该解释得更清楚,但我的语言不允许:(这真的是您的完整代码吗?因为
collectionView(:numberofitemsinssection:)
返回0,这意味着集合视图不应加载单个单元格。
func GetUsersInfoResponse(result: AnyObject) {
    userInfoArray = result as! [UserInfo]
    collectionView?.reloadData()
}