2015-07-22 2 views
0

Когда я перехожу только к текстовому сообщению, эта ошибка возникает. Но когда я отправляю UIImage с текстом, он отлично работает.Неустранимая ошибка: неожиданно найден nil во время разворачивания необязательного значения (Swift & Parse)

func postFeed(text: String, image: UIImage?) { 

    PFGeoPoint.geoPointForCurrentLocationInBackground { (geopoint, error) in 

     if let geopoint = geopoint { 

      let object = PFObject(className: "UserFeed") 

      object.setValue(text, forKey: "post") 

      let imageData = UIImageJPEGRepresentation(image, 0.75) 

      let imageFile = PFFile(name: "image.png", data: imageData) //ERROR HERE << 

      object.setValue(imageFile, forKey: "imageFile") 

      object.setValue(geopoint, forKey: "location") 

      if let user = PFUser.currentUser() { 

       object.setValue(user, forKey: "fromUser") 

      } 

      object.saveInBackgroundWithBlock({ (success, error) -> Void in 

       dispatch_async(dispatch_get_main_queue()) { 

        //println("Success object saved to parse") 

        NSNotificationCenter.defaultCenter().postNotificationName(postNotification, object: success) 

       } 

      }) 

     } 

    } 

} 

Вот где я назначу изображение загруженное разобрать на UIImageView. Как-то мне нужно только получить изображение, отправленное этим идентификатором пользователя, и назначить его UIImageView.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! TalesTableViewCell 

    // Configure the cell... 

    if let posts = posts { 

     let object = posts[indexPath.row] 

     cell.tableLabel?.font = UIFont(name: "Avenir", size: 16) 

     cell.tableLabel?.text = object["post"] as? String 

     cell.tableLabel?.numberOfLines = 0 

     object["imageFile"]?.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in 
      if error == nil { 

       let image = UIImage(data: imageData!) 

       cell.tableImage.image = image 

      } 
     }) 

    } 

    return cell 
} 

Я потерян, я пробовал так много вещей, но каждый раз не мог, все идеи?

Спасибо!

ответ

1

Вам также необходимо использовать условную un-wrapping для объекта изображения.

Заменить:

let imageData = UIImageJPEGRepresentation(image, 0.75) 
let imageFile = PFFile(name: "image.png", data: imageData) 
object.setValue(imageFile, forKey: "imageFile") 

С:

if let image = image 
{ 
    let imageData = UIImageJPEGRepresentation(image, 0.75) 
    let imageFile = PFFile(name: "image.png", data: imageData) 
    object.setValue(imageFile, forKey: "imageFile") 
} 
+0

Он работал, но теперь изображение становится назначен на пост над ним, когда сообщение удаляется на разборе. –

+0

@JoeMancini: Как вы удаляете сообщение? Можете ли вы добавить этот код в этот раздел комментариев? –

+0

Я использовал сайт синтаксического анализа, чтобы удалить строку. –

Смежные вопросы

 Смежные вопросы