我有一个 VideoViewController 类,它调用我的数据库类并执行 loadPFObject 并返回一个 PFObject。
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]
它说在展开 Optional 值时意外发现 nil。
我相信 loadPFObject 因为它在不同的类中,所以它在不同的线程上运行,并且在它解开该字符串值时还没有完成加载 PFObject。
我该怎么做才能解决这个问题?我应该在主线程中添加一个计时器暂停,还是我对线程的假设完全错误并且错误是完全不同的?