在我的代码中有一个循环,它转到一个数组,并将该数组中的所有对象添加到另一个数组中。第二个数组中的对象是tableview中显示的内容。因此,每次我通过循环时,我都会将对象附加到第二个数组。在那个循环后我重新加载tableview,但有时它不会显示所有对象?!我认为这是因为它开始重载代码即使附加过程尚未完成也会被执行?在完成其他所有操作后,如何重新加载tableview? 这是我的代码,我正在使用Parse,所以查询来自解析服务器并给我一个数组。 matesIdsAndNames是一个字典,其余的是数组。
if mateUserObject.isEmpty == false{
for mateId in mateUserObject{
let date = NSDate()
let dateInt = date.timeIntervalSince1970
let query = PFQuery(className: "calendarEvents")
query.whereKey("createdBy", equalTo: mateId)
query.whereKey("StartDate", lessThan: dateInt)
query.whereKey("EndDate", greaterThan: dateInt)
query.cachePolicy = .NetworkOnly
query.findObjectsInBackgroundWithBlock({ (objects:[PFObject]?, error:NSError?) -> Void in
if error != nil{
print(error)
}else{
if objects?.isEmpty == true{
self.freeMateIds.append(mateId.objectId!)
print(self.freeMateIds)
if self.mateUserObject.last == mateId{
if self.freeMateIds.isEmpty == false{
for freeMate in self.freeMateIds{
let oneFreeMate = self.matesIdsAndNames[freeMate]
self.freeMateNames.append(oneFreeMate!)
print(self.freeMateNames)
}
}
self.MatesTableView.reloadData()
}
}
}
})
}
}
}
答案 0 :(得分:0)
您正在从多个后台进程向数组添加对象,但swift数组不是线程安全的。一种选择是谷歌" swift线程安全阵列"并使用提供的一些示例代码。