У меня есть класс 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 к моменту его начала, чтобы развернуть это строковое значение.
Что бы я сделал, чтобы исправить это? Должен ли я добавить паузу таймера в основном потоке или мое предположение о том, что потоки полностью неправильны, а ошибка - это совсем другое?
См: http://stackoverflow.com/questions/24726723/stop-pause-swift-app-for-period-of-time и http://stackoverflow.com/questions/27517632/how-to-create-a-delay-in-swift – WBT
Является ли спать/приостанавливать лучший метод обработки моей проблемы или есть лучший способ узнать, когда этот поток заканчивается ? –
Обратные вызовы лучше, чем сон, но ссылки в основном основаны на том, как вы назвали свой вопрос. – WBT