Swift iOS如何暂停线程
我有一个VideoViewController类,它调用我的数据库类并执行loadPFObject并返回一个PFObject。Swift iOS如何暂停线程
var db = VideoDatabaseHandler() var video_titles = [String]()
var video_urls = [String]()
override func viewDidLoad() {
super.viewDidLoad()
//Load video list
let video_list = db.loadPFObject("TutorialVids")
video_titles = video_list["titles"] as! [String]
video_urls = video_list["urls"] as! [String]
self.tableView.reloadData()
}
在我这里数据库类 然后是返回PFObject
//This function loads a PFObject from the database func loadPFObject(category: String) -> PFObject {
let query = PFQuery(className: category)
var db_obj = PFObject(className: category)
if(category == "TutorialVids"){
query.getObjectInBackgroundWithId("vpWEueKv5O"){
(tutVideos: PFObject?, error: NSError?) -> Void in
//successfully loaded video lists
if(error == nil && tutVideos != nil) {
db_obj = tutVideos!
}
//Error loading video lists
else{
print(error)
}
}
}
print(db_obj)
return db_obj
}
我不断收到在我的代码第一部分的错误我张贴上线的功能:
video_titles = video_list["titles"] as! [String]
它说意外地发现零,同时展开一个可选值。
我相信loadPFObject,因为它在不同的类上运行在不同的线程上,并且在打开该字符串值的时候没有完成加载PFObject。
我该怎么做才能解决这个问题?我应该在主线程中添加计时器暂停还是我对线程的假设完全错误,错误是完全不同的?
回答:
您需要执行访问异步回调中的标题和URL的代码。
用途:
var db = VideoDatabaseHandler() var video_titles = [String]()
var video_urls = [String]()
override func viewDidLoad() {
super.viewDidLoad()
//Load video list
db.loadPFObject("TutorialVids") { video_list in
video_titles = video_list["titles"] as! [String]
video_urls = video_list["urls"] as! [String]
self.tableView.reloadData()
}
}
和
//This function loads a PFObject from the database func loadPFObject(category: String, onSuccess: (PFObject -> Void)){
let query = PFQuery(className: category)
if(category == "TutorialVids"){
query.getObjectInBackgroundWithId("vpWEueKv5O"){
(tutVideos: PFObject?, error: NSError?) -> Void in
//successfully loaded video lists
if(error == nil && tutVideos != nil) {
onSuccess(tutVideos!)
}
//Error loading video lists
else{
print(error)
}
}
}
}
以上是 Swift iOS如何暂停线程 的全部内容, 来源链接: utcz.com/qa/266136.html