2016-04-05 2 views
2

В настоящее время это моя реализация в методе в viewDidLoad dateParameter = self.lastMessageDateКак загружать изображения асинхронно

 for chat in self.realm.objects(ChatObject).filter("room_id == \(self.room.id)").sorted("dateTime", ascending: true) { 

      if chat.type == "GIFT" { 
       print(chat.gift) 
       let imageData = NSData(contentsOfURL: NSURL(string: chat.gift!.image)!) 
       //let photoItem = JSQPhotoMediaItem(image: UIImage(data: imageData!)) 
       let photoItem = ChatImageJSQPhoto(image: UIImage(data: imageData!)) 

       let photoMessage = JSQMessage(senderId: String(chat.sender!.id), senderDisplayName: chat.sender!.username, date: self.formatter.dateFromString(chat.dateTime), media: photoItem) 
       self.messages.append(photoMessage) 
       //then get the message if it exists 
       if chat.desc.characters.count > 0 { 
        self.addMessage(String(chat.sender!.id), senderName: chat.sender!.username, text: chat.desc, date: chat.dateTime) 
       } 
      } else { 
       if chat.desc.characters.count > 0 { 
        print(chat.sender?.username) 
        self.addMessage(String(chat.sender!.id), senderName: chat.sender!.username, text: chat.desc, date: chat.dateTime) 
       } 
      } 
     } 
     self.finishReceivingMessage() 

Однако, как вы можете предсказать, я буду stucked в течение нескольких секунд, прежде чем в мой JSQMessagesViewController. Как я могу загрузить эти пузыри и иметь индикатор активности в середине пузыря, а затем загружать изображения асинхронно?

+0

У меня есть эта же проблема, у вас уже есть решение? – AndaluZ

+1

Я добавил разбивку на страницы для прокрутки моих сообщений. Попробуйте и сообщите мне, если это поможет. – Happiehappie

+0

Попробуйте загрузить их в фоновом режиме вместо того, чтобы загружать их в основной поток – Happiehappie

ответ

1

Я предпочитаю использовать зимородка. поверьте мне это здорово

 let resource = ImageResource(downloadURL:URL(string: productsForSearch.result[indexPath.row].image_url)!,cacheKey: productsForSearch.result[indexPath.row].image_url) 
     CollectionCell.imagesForSearch.kf.indicatorType = .activity //this is to make activity indicator 
     CollectionCell.imagesForSearch.kf.setImage(with: resource) 
Смежные вопросы