我有一个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。
我该怎么做才能解决这个问题?我应该在主线程中添加一个计时器暂停,还是我对线程完全错误的假设,错误是完全不同的?
答案 0 :(得分:0)
您需要执行访问异步回调中的标题和网址的代码。
使用:
<td><form action="controller/edit" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>">
<input type="hidden" name="name" value="<?php echo $name ?>">
<input type="hidden" name="amount" value="<?php echo $amount ?>">
<input type="submit" value="edit">
</form></td>
和
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()
}
}