我已经搜索,并没有发现任何人发布了这样的东西,但如果是这样,请随时指出我在正确的方向!使用实例填充UITableview填充数组
因此,使用MVC,我在创建实例,我UITableviewcontroller
var brainLink = LessonBrain()
这是我的viewDidLoad应该获取数据并填充阵列 'subjectNameOneDay':
let todoDictionary = NSUserDefaults.standardUserDefaults().dictionaryForKey("subjectDictionary") ?? [:]
brainLink.parseQuery(self.setupData.integerForKey("pupilNumber"), dictName: "subjectDictionary")
self.subjectNameOneDay = todoDictionary["TwoTuesday"]! as! NSArray
self.tableView.reloadData()
brainLink
实例调用方法'parseQuery':
func parseQuery(numberToRetreive: Int, dictName:String) {
var tempArray:[String] = []
if self.daysOfTheWeek.contains("\(self.currentDayOfTheWeekForLabel)") {
print(currentDayOfTheWeekForLabel)
print("parse query for data number \(numberToRetreive) started")
let query:PFQuery = PFQuery(className: self.setupData.valueForKey("organisationID") as! String)
query.fromLocalDatastore()
query.whereKey("PupilNumber", equalTo: "\(numberToRetreive)")
query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
if (error == nil) {
print("Successfully retrieved 2 \(objects)")
for object in objects! {
var periodCounter = 1
while periodCounter <= 6 {
print(self.currentDayOfTheWeekForData)
tempArray.append(object.valueForKey("\(self.currentDayOfTheWeekForData)P\(periodCounter)") as! String)
print(tempArray)
periodCounter += 1
}
self.addItem(tempArray, weekDayPeriod: self.currentDayOfTheWeekForData, dictionaryName: dictName)
}
}else {
print(error!.userInfo)
}
}
}else{
print("It's the weekend!")
}
print("query function returning temp array")
}
这一切工作正常,并填充数组,但我遇到的问题是,无论我已经尝试或我把我的地方self.tableView.reloadData()
它不会'等待'数据提取之前尝试重新加载桌子。
我在哪里可以放这个代码/安排它,因此它提取数据然后重新加载?
的reloadData添加到您的回调,而不是视做负载。到此为止,新数据将被检索。 – MDB983
我的无知道歉.....我怎么将它添加到我的回调?你的意思是从parseQuery函数返回self.tableView.reloadData()? – MartynE23
是的,但你需要通过引用的地址,所以_weak MyTableViewClass * MyClass = self。然后在解析查询函数mylass.reloadData(你应该检查我的类在调用它的方法之前没有被删除掉)。你需要确保在我的class.reloadData被调用之前tableview数据源也被填充。 – MDB983