2016-12-14 21 views
0

По какой-то причине я получаю сбой, и я не уверен, почему. Все правильно извлекается из FIRBase. Но при попытке загрузить пользовательский URL я получаю авариюОшибка JSQMessageAvatarImageFactory

распечатан (снимок)

["MediaType": TEXT, "text": Test Message, "senderId": KG7b3tDTaoMwcAQAi2JI8vjj0OB2, "senderName": user1] 
Optional({ 
email = "[email protected]"; 
id = KG7b3tDTaoMwcAQAi2JI8vjj0OB2; 
profileImage = "gs://big-pen.appspot.com/profileImage/KG7b3tDTaoMwcAQAi2JI8vjj0OB2"; 
username = user1;}) 

Моей ошибку

fatal error: unexpectedly found nil while unwrapping an Optional value 
(lldb) 

Вот мой код.

func observeUsers(id: String){ 
     FIRDatabase.database().reference().child("people").child(id).observeEventType(.Value, withBlock: { snapshot in 
     print(snapshot.value) 
     if let dict = snapshot.value as? [String: AnyObject] { 
      let avatarUrl = dict["profileImage"] as! String 

      //call the setupAvatar function 
      self.avatar(avatarUrl, messageId: id) 

     } 
    }) 
} 


func avatar(url: String, messageId: String){ 

    if DataService.dataService.currentUser != nil{ 
     if url != "" { 
     let fileURL = NSURL(string: url) 
     let data = NSData(contentsOfURL: fileURL!) 
     let image = UIImage(data:data!) //<-----I am getting an error at this line error code: "Thread1:EXC_BAD_INSTRUCTION(code=Exc_I386_INVOP, subcode=0x0)" 
     let userImg = JSQMessagesAvatarImageFactory.avatarImageWithImage(image, diameter: 30) 
      avatarDict[messageId] = userImg 
     }else{  
     JSQMessagesAvatarImageFactory.avatarImageWithImage(UIImage(named: "cam_w.png"), diameter: 30) 
    } 
    collectionView.reloadData() 
    } 
} 

override func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageAvatarImageDataSource! { 
    let message = messages[indexPath.item] 

    return avatarDict[message.senderId] 
    //return JSQMessagesAvatarImageFactory.avatarImageWithImage(UIImage(named: "cam_w.png"), diameter: 30) 
} 

Спасибо. Я застрял на этом уже два дня.

ответ

0

Может быть, это не является допустимым URL так, чтобы проверить это изменить аватар FUNC на:

func avatar(url: String, messageId: String){ 

    if DataService.dataService.currentUser != nil{ 
     if let fileURL = NSURL(string: url), 
       data = NSData(contentsOfURL: fileURL) { 

     let image = UIImage(data:data!) //<-----I am getting an error at this line error code: "Thread1:EXC_BAD_INSTRUCTION(code=Exc_I386_INVOP, subcode=0x0)" 
     let userImg = JSQMessagesAvatarImageFactory.avatarImageWithImage(image, diameter: 30) 
      avatarDict[messageId] = userImg 
     }else{  
     JSQMessagesAvatarImageFactory.avatarImageWithImage(UIImage(named: "cam_w.png"), diameter: 30) 
    } 
    collectionView.reloadData() 
    } 
} 
+0

Ого я вижу. Я потянул «gs: //» в качестве URL-адреса, но это неверно. Как я могу изменить свой существующий код, чтобы сделать «gs: //» в «http: //»? Это возможно? Извините, я новичок в firebase. – Ketone

+0

Вам нужно итерировать строку и найти «gs: //» и заменить на: «http: //» проверить эту ссылку http://stackoverflow.com/questions/30767594/iterate-through-a-string-swift -2-0 –

+1

Ты гений !!!! Два дня работали над этим, и вы поняли это через 10 минут. Получил это, чтобы работать !!!! Спасибо вам. – Ketone

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

  • Нет связанных вопросов^_^