JSQMessageAvatarImageFactory错误
问题描述:
由于某种原因,我收到崩溃,我不知道为什么。一切正在从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)
}
谢谢。我已经坚持了两天了。
答
也许这不是一个有效的网址,以便检查它改变你的头像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()
}
}
哇哦我明白了。我拉一个“gs://”作为URL,但这是不正确的。我如何修改现有的代码以将“gs://”变成“http://”?这可能吗?对不起,我是Firebase新手。 – Ketone
你必须迭代你的字符串,并找到“gs://”并替换为:“http://”查看此链接http://stackoverflow.com/questions/30767594/iterate-through-a-string-swift -2-0 –
你是个天才!两天的工作,你会在10分钟内找到答案。得到它的工作!谢谢。 – Ketone