Arrays 一个正在调用的解析查询和一个不在cellForItemAtIndexPath方法中的解析查询

Arrays 一个正在调用的解析查询和一个不在cellForItemAtIndexPath方法中的解析查询,arrays,parse-platform,uiimageview,swift2,ios9,Arrays,Parse Platform,Uiimageview,Swift2,Ios9,在索引路径方法的item单元格中,我试图使用解析数据填充UIImageView数组。creator图像视图填充得很好,但是attendee数组的第二个“if let”根本没有被调用(我很确定代码会工作,尽管它有点棘手,我不是100%确定,但我希望它至少首先被调用) 有什么想法吗?谢谢 func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) ->

在索引路径方法的item单元格中,我试图使用解析数据填充UIImageView数组。creator图像视图填充得很好,但是attendee数组的第二个“if let”根本没有被调用(我很确定代码会工作,尽管它有点棘手,我不是100%确定,但我希望它至少首先被调用)

有什么想法吗?谢谢

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    //sets up cell

    let cell : EventCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! EventCell

    //adds attend action

    cell.attendButton.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside)


    //queries parse for events 

    let event = events?[indexPath.row]

    event?.eventImage.getDataInBackgroundWithBlock({ (data, error) -> Void in

        if let data = data, image = UIImage(data: data) {

            cell.eventBackgroundImage.image = image
            cell.eventTitleLabel.text = event?.eventTitle

            //gets profile picture of events creator 

            if let eventCreator = event?.objectForKey("user") as? PFUser {
                if let creatorImage = eventCreator.objectForKey("profilePicture") as? PFFile {
                        creatorImage.getDataInBackgroundWithBlock({ (data, error) -> Void in

                        cell.creatorImageView.image = UIImage(data: data!)

                    })
                }
            }



            //gets profile pictures for image view array on back of cell

            if let attendeeArray = event?.objectForKey("attendees") as? [PFUser] {

                for var index = 0; index < attendeeArray.count; ++index {
                    let profileImageView = cell.imageViewArray[index]
                    let usr : PFUser = (attendeeArray[index] as PFUser?)!

                    //                        if let picture = usr.objectForKey("profilePicture") as? PFFile {

                    usr.fetchIfNeededInBackgroundWithBlock({ (object: PFObject?, error: NSError?) -> Void in
                        if let picture = object!.objectForKey("profilePicture") as? PFFile {
                            picture.getDataInBackgroundWithBlock({ (data, error) -> Void in
                                profileImageView.image = UIImage(data: data!)
                            })
                        }
                    })


                }

            }


            //sets correct category for cell image

            if event?.category == "" {
                cell.categoryImageView.image = nil
            }

            if event?.category == "The Arts" {
                cell.categoryImageView.image = UIImage(named: "Comedy")
            }

            if event?.category == "The Outdoors" {
                cell.categoryImageView.image = UIImage(named: "Landscape")
            }

            if event?.category == "Other" {
                cell.categoryImageView.image = UIImage(named: "Dice")
            }

            if event?.category == "Sports" {
                cell.categoryImageView.image = UIImage(named: "Exercise")
            }

            if event?.category == "Academics" {
                cell.categoryImageView.image = UIImage(named: "University")
            }

            if event?.category == "Science" {
                cell.categoryImageView.image = UIImage(named: "Physics")
            }

            if event?.category == "Entertainment" {
                cell.categoryImageView.image = UIImage(named: "Bowling")
            }

            if event?.category == "Food & Drinks" {
                cell.categoryImageView.image = UIImage(named: "Food")
            }

            if let date = event?.eventDate {
                let dateFormatter = NSDateFormatter()
                dateFormatter.dateFormat = "yyyy-MM-dd"

                cell.eventDescriptionLabel.text = event?.eventDescription
                cell.eventDateLabel.text = dateFormatter.stringFromDate(date)
            }
        }
    })

    cell.layer.cornerRadius = 20

    //not sure if necessary

//        let subviews : NSArray = cell.contentView.subviews
//        
//        for view in subviews {
//            view.removeFromSuperview()
//        }

    return cell

}
func collectionView(collectionView:UICollectionView,cellForItemAtIndexPath indepath:nsindepath)->UICollectionViewCell{
//设置单元格
让cell:EventCell=collectionView.dequeueReusableCellWithReuseIdentifier(“cell”,forIndexPath:indexPath)作为!EventCell
//添加参加行动
cell.attendButton.addTarget(self,action:“buttonTapped:”,forControlEvents:UIControlEvents.TouchUpInside)
//查询解析事件
让事件=事件?[indexPath.row]
event?.eventImage.GetDataInBackgroundithBlock({(数据,错误)->中的Void
如果let data=data,image=UIImage(data:data){
cell.eventBackgroundImage.image=image
cell.eventTitleLabel.text=事件?.eventTitle
//获取事件创建者的配置文件图片
如果让eventCreator=event?.objectForKey(“用户”)作为?PFUser{
如果让creatorImage=eventCreator.objectForKey(“profilePicture”)作为?PFFile{
creatorImage.GetDataInBackgroundithBlock({(数据,错误)->中的Void
cell.creatorImageView.image=UIImage(数据:数据!)
})
}
}
//获取单元格背面图像视图阵列的配置文件图片
如果让AttendeArray=event?.objectForKey(“与会者”)作为?[PFUser]{
对于var index=0;index中的Void
如果让picture=object!.objectForKey(“profilePicture”)作为?PFFile{
picture.getDataInBackgroundithBlock({(数据,错误)->中的Void
profileImageView.image=UIImage(数据:数据!)
})
}
})
}
}
//设置单元格图像的正确类别
如果事件?.category==“”{
cell.categoryImageView.image=nil
}
如果事件?.category==“艺术”{
cell.categoryImageView.image=UIImage(名为“喜剧”)
}
如果事件?.category==“户外”{
cell.categoryImageView.image=UIImage(名为“景观”)
}
如果事件?.category==“其他”{
cell.categoryImageView.image=UIImage(名为“骰子”)
}
如果事件?.category==“体育”{
cell.categoryImageView.image=UIImage(名为“练习”)
}
如果事件?.category==“学术”{
cell.categoryImageView.image=UIImage(名为“大学”)
}
如果事件?.category==“科学”{
cell.categoryImageView.image=UIImage(名为“物理”)
}
如果事件?.category==“娱乐”{
cell.categoryImageView.image=UIImage(名为“保龄球”)
}
如果事件?.category==“食品和饮料”{
cell.categoryImageView.image=UIImage(名为“食品”)
}
如果let date=event?.eventDate{
让dateFormatter=NSDateFormatter()
dateFormatter.dateFormat=“yyyy-MM-dd”
cell.eventDescriptionLabel.text=事件?.eventDescription
cell.eventDateLabel.text=dateFormatter.stringFromDate(日期)
}
}
})
cell.layer.cornerRadius=20
//不确定是否有必要
//let子视图:NSArray=cell.contentView.subview
//        
//用于在子视图中查看{
//view.removeFromSuperview()视图
//        }
返回单元
}

应将查询逻辑移出
cellForItemAtIndexPath
。创建执行查询的
loadEvents
函数。在查询的完成块中,将要设置为数据源的事件数组更新到集合视图并刷新视图。在刷新视图时,
CellForItemIndexPath
将被自动调用以使用新数据填充集合视图。我确实在view Dod load方法中进行了查询,但为了访问索引路径,我还将上述代码放在cellForItemAtIndexPath方法中。我只是不知道为什么会调用第一个“if let”,但第二个不是。图像视图的创建者图像ows很好。如果看不到解析类的完整结构,很难说。代码似乎很好,因此我猜测,
objectForKey
event
中存在键入错误,不包含预期的数据。尝试使用一些
print
语句来查看
event
中的值要显示什么进一步诊断问题应将查询逻辑移出
cellForItemAtIndexPath
。创建执行查询的
loadEvents
函数。在查询的完成块中,将要设置为数据源的事件数组更新到集合视图并刷新视图。刷新视图时,
ce将自动调用llForItemAtIndexPath
,以使用新数据填充集合视图。我在view did load方法中进行查询,但为了访问索引