Ios 错误:致命错误:索引超出范围xcode swift 2
我不太懂英语。İ试着用代码解释这个错误 DBContextDelagateIos 错误:致命错误:索引超出范围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
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()
}