如何使用保存在其他viewController的struct模型中的数据连接到新的viewController

时间:2019-01-13 11:33:32

标签: swift

如何在新的viewController中获取Struct模型中的数据 当我在Struct模型中打印var时,我得到了一个viewController,它看起来很好。 我创建了一个新的viewController,试图在该结构模型的其他视图中获取相同的数据,但是当我打印它时,它却给了我

我试图在新的viewController中使模型与新模型相等

MessageController视图

var messages = [Message]()
var users = [Contact]()
var messagesDicionary = [String: Message]()
var testMSG : Message?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let message = self.messages[indexPath.row]
    let chatPartnerId = message.chatPartnerId()
    let ref = Database.database().reference().child("users").child(chatPartnerId)

    ref.observe(.value) { (snap) in
      if let dictinoary = snap.value as? [String: AnyObject] {
        guard let email = dictinoary["email"] ,let profileimage = dictinoary["profileimage"], let userid = dictinoary["userid"], let username = dictinoary["username"] else {
          return
        }

        var user = Contact()
        user.userid = chatPartnerId
        user.userid = chatPartnerId
        let userValue = Contact.init(email: email as? String, username: username as? String, profileimage: profileimage as? String, userid: userid as? String)

        self.users.append(userValue)
        self.showChatControllerToUser(user: userValue)
        print(message.receivername)
      }
    }
}

Print Optional(“ Omar”)的结果

ChatMessagesController视图

var user :Contact?
var users = [Contact]()
var message: Message?
var messagesArray = [Message]()

func observeChatMessages() {
    guard let uid = Auth.auth().currentUser?.uid else {
        return
    }

    let userMessagesRef = Database.database().reference().child("usersmesssages").child(uid)

    userMessagesRef.observe(.childAdded) { (snap) in
        let messageId = snap.key
        let messageRef = Database.database().reference().child("messages").child(messageId)

        messageRef.observeSingleEvent(of: .value, with: { (snapshot) in
            guard let dictionary = snapshot.value as? [String:AnyObject] else {
                return
            }

            let text = dictionary["text"] as? String
            let receiverid = dictionary["receiverid"] as? String
            let senderid = dictionary["senderid"] as? String
            let time = dictionary["timestamp"] as? TimeInterval
            let senderName = dictionary["sendername"] as? String
            let receiverName = dictionary["receivername"] as? String

            self.messagesArray.append(MessageValue)
            self.chatTableView.reloadData()
            print(self.message?.receivername)
        })
    }
}

打印结果为NIL

消息模型

struct Message {
  var text: String?
  var receiverid: String?
  var senderid: String?
  var timestamp: TimeInterval?
  var sendername: String?
  var receivername: String?

  func chatPartnerId() -> String {
    return (senderid == Auth.auth().currentUser?.uid ? receiverid : senderid)!
  }
}

我试图在MessagesController中制作

let chatMessage = ChatMessageController()
chatMessage.message = self.testMSG

0 个答案:

没有答案