我開發一個聊天應用,我在顯示頭像問題我JSQMessagesViewController
斯威夫特 - JSQMessagesViewController與斯威夫特
override func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageAvatarImageDataSource! {
var avatar = UIImage()
let people = FIRDatabase.database().reference().child("people").child(senderId)
people.observeEventType(.Value, withBlock: {
snapshot -> Void in
let dict = snapshot.value as! Dictionary<String, AnyObject>
let imageUrl = dict["profileImage"] as! String
if imageUrl.hasPrefix("gs://") {
FIRStorage.storage().referenceForURL(imageUrl).dataWithMaxSize(INT64_MAX, completion: { (data, error) in
if let error = error {
print("Error downloading: \(error)")
return
}
avatar = UIImage.init(data: data!)!
})
}
})
let AvatarJobs = JSQMessagesAvatarImageFactory.avatarImageWithPlaceholder(avatar, diameter: UInt(kJSQMessagesCollectionViewAvatarSizeDefault))
return AvatarJobs
}
這裏的問題是,當我試圖拉的圖像發件人firebase,我得到一個空白圖像,但是當我嘗試使用let AvatarJobs = JSQMessagesAvatarImageFactory.avatarImageWithPlaceholder(UIImage(named: "icon.png"), diameter: UInt(kJSQMessagesCollectionViewAvatarSizeDefault))
它工作正常,你認爲這裏的問題是什麼?謝謝!
這是一個很好的解決方案,只需要在應用程序中觸發一次即可爲您提供化身。因此,優化您的應用程序以加快載入速度,因爲您不必爲每個單元格獲取圖像,從而創建單元格。 –
嗨!這是什麼類型的MyImageCache?這是AnyObject嗎?同樣在這一行'func createAvatar(senderId:String,senderDisplayName:String,user:FIRUser,color:UIColor)''我將'FBUser'替換爲'FIRUser',並且在這行中出現這個錯誤'else if let photoUrl = user.pictureURL其中user.pictureURL!=「」'這裏似乎是什麼問題?謝謝! –
用我用於緩存的自定義類更新了我的答案。我還將用戶類中的用戶數據(user.pictureUR)保存到數據庫中,您將不得不自定義數據,而只需傳遞url。 –