Я пытаюсь реализовать загрузку данных с сервера Parse после нажатия кнопки на postVC для загрузки данных и перехода к гостевому элементу. Он работал нормально и в какой-то момент начал крушить приложение ... не знаете почему? Я получаю фатальную ошибку: неожиданно нашел нуль, разворачивая необязательное значение ... Приветствуется всякое руководство или помощь. Благодаря!неожиданно нашел нуль при развертывании необязательного значения dispatch-async
import UIKit
import Parse
var postuuid = [String]()
class postVC: UITableViewController {
//postVC button click function
//clicked username button from post
@IBAction func usernameBtn_click(sender: AnyObject) {
let i = sender.layer.valueForKey("index") as! NSIndexPath
let cell = tableView.cellForRowAtIndexPath(i) as! postCell
// if user tapped on himself go home, else go guest
if cell.usernameBtn.titleLabel?.text == PFUser.currentUser()?.username {
let home = self.storyboard?.instantiateViewControllerWithIdentifier("homeVC") as! homeVC
self.navigationController?.pushViewController(home, animated: true)
} else {
let guest = self.storyboard?.instantiateViewControllerWithIdentifier("guestVC") as! guestVC
self.navigationController?.pushViewController(guest, animated: true)
}
}
// guestVC relevant code
import UIKit
import Parse
var guestname = [String]()
class guestVC: UICollectionViewController {
var uuidArray = [String]()
var picArray = [PFFile]()
// posts loading function
func loadPosts() {
let query = PFQuery(className: "posts")
// app keeps crashing in line below when I try to load data to guestVC
query.whereKey("username", equalTo: guestname.last!)
query.limit = self.page
query.findObjectsInBackgroundWithBlock({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.uuidArray.removeAll(keepCapacity: false)
self.picArray.removeAll(keepCapacity: false)
for object in objects! {
self.uuidArray.append(object.valueForKey("uuid") as! String)
self.picArray.append(object.valueForKey("pic") as! PFFile)
}
self.collectionView?.reloadData()
} else {
print(error!.localizedDescription)
}
dispatch_async(dispatch_get_main_queue(), {() -> Void in
// code here will be executed as the main queue
})
})
}
Ok, спасибо. Итак, что мне вернуть в инструкции else? У меня есть несколько экземпляров, получающих ошибки, когда я возвращаю запрос, используя guestname.last, когда вы переходите к гостевой версии. – user3708224
Приложение вылетает из-за того, что имя guest.las равно nil (имя guest пусто), но вы пытаетесь развернуть его. В противном случае вы можете обрабатывать случай, когда guestname пусто (возможно, отображает ошибку в представлении предупреждения) –