gpt4 book ai didi

ios - 使用实例填充 UITableview 来填充数组

转载 作者:行者123 更新时间:2023-11-30 13:32:29 25 4
gpt4 key购买 nike

我已经搜索过,但没有找到任何人发布过此类内容,但是如果有,请随时为我指出正确的方向!

因此,使用 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() 放在哪里,它都不会“等待” ' 用于在尝试重新加载表之前获取数据。

我可以在哪里放置此代码/安排它以便它获取数据然后重新加载?

最佳答案

上面一行:

query.findObjectsInBackgroundWithBlock {(对象,错误)-> 无效

启动完成处理程序。只要调用完成,此 block 就会运行,因此执行线程将在此继续,这就是为什么当您的 reloadData 调用运行时,它尚未将对象添加到您的数组中。

如果您将 reloadData 调用作为此 block 中发生的最后一件事,您将更接近获得所需的结果。

不过,您还应该确保在进行 UI 调用时正在主线程上运行。由于您的完成 block 可以在任何线程上执行,因此您可以这样做:

            dispatch_async(dispatch_get_main_queue(), {
self.tableView.reloadData()
})

关于ios - 使用实例填充 UITableview 来填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36409366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com