HomeiOS Developmentios - Unexpectedly discovered nil whereas unwrapping... MessageKit

ios – Unexpectedly discovered nil whereas unwrapping… MessageKit


I’ve a struct arrange for Messages and every time I received to load messages in app, I obtain an unexpectedly discovered nil error on this line of code –>

var chatPartnerId: String {
        return isFromCurrentUser ? toID! : fromID! // the place I get the error
    }

I can not determine what Im doing flawed right here in any respect.

This is the category setup:

struct Message: MessageType {
  let id: String?
    
  var messageId: String {
    return id ?? UUID().uuidString
  }
    
    var content material: String?
    var toID: String?
    var fromID: String?
    var isFromCurrentUser = Bool()
    
    var chatPartnerId: String {
        return isFromCurrentUser ? toID! : fromID!
    }
    
  let sentDate: Date
  let sender: SenderType
  var picture: UIImage?
  var downloadURL: URL?
    
  var sort: MessageKind {
    if let picture = picture {
      let mediaItem = ImageMediaItem(picture: picture)
      return .picture(mediaItem)
    } else {
        return .textual content(content material ?? "")
    }
  }

    init(person: Person, content material: String, fromID: String, toID: String) {
    sender = Sender(senderId: person.uid!, displayName: person.identify!)
    self.content material = content material
        self.fromID = fromID
        self.toID = toID
    sentDate = Date()
    id = nil
  }

  init(person: Person, picture: UIImage) {
    sender = Sender(senderId: person.uid!, displayName: person.identify!)
    self.picture = picture
    content material = ""
      fromID = ""
      toID = ""
    sentDate = Date()
    id = nil
  }

  init?(doc: QueryDocumentSnapshot) {
    let knowledge = doc.knowledge()
    guard
      let sentDate = knowledge["created"] as? Timestamp,
      let senderId = knowledge["senderId"] as? String,
      let fromID = knowledge["fromID"] as? String,
      let toID = knowledge["toID"] as? String,
      let senderName = knowledge["senderName"] as? String
    else {
      return nil
    }

    id = doc.documentID
    self.sentDate = sentDate.dateValue()
    sender = Sender(senderId: senderId, displayName: senderName)
      self.isFromCurrentUser = fromID == Auth.auth().currentUser?.uid
    

    if let content material = knowledge["content"] as? String {
      self.content material = content material
      downloadURL = nil
    } else if let urlString = knowledge["url"] as? String, let url = URL(string: urlString) {
      downloadURL = url
      content material = ""
    } else {
      return nil
    }
      
      
  }
}

// MARK: - DatabaseRepresentation
extension Message: DatabaseRepresentation {
  var illustration: [String: Any] {
    var rep: [String: Any] = [
      "created": sentDate,
      "senderId": sender.senderId,
      "fromID": fromID,
      "toID": toID,
      "senderName": sender.displayName
    ]

    if let url = downloadURL {
      rep["url"] = url.absoluteString
    } else {
      rep["content"] = content material
    }

    return rep
  }
}

// MARK: - Comparable
extension Message: Comparable {
  static func == (lhs: Message, rhs: Message) -> Bool {
    return lhs.id == rhs.id
  }

  static func < (lhs: Message, rhs: Message) -> Bool {
    return lhs.sentDate < rhs.sentDate
  }
}

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments