сохранение данных в базе данных Firebase - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь сохранить данные в базе данных по childByAutoID. по какой-то причине у меня возникает ошибка:

Невозможно преобразовать значение типа 'Poster.Type' в ожидаемый тип аргумента 'Poster'

У меня нет ни одной подсказкичто это значит. мой код выглядит так:

var post: Poster?
// var post:Poster? is above my viewDidLoad function

@objc func handleLike() {
    sendSwipeNotification(post: Poster, swipedRight: true)
} 

  func sendSwipeNotification(post: Poster, swipedRight: Bool) {
    guard let currentUser = Auth.auth().currentUser?.uid else {return}
    guard let cardID = topCardView?.cardViewModel.uid else { return }

    let creationDate = Int(NSDate().timeIntervalSince1970)

    if swipedRight {

        if currentUser != post.fromId {
            let values = ["checked": 0,
                          "creationDate": creationDate,
                          "uid": currentUser,
                          "type": SWIPE_INT_VALUE,
                          "cardID": cardID] as [String : Any]

          let swipeRef = USER_SWIPES_REF.child(post.fromId!).childByAutoId()
              swipeRef.updateChildValues(values, withCompletionBlock: { (err, ref) in
              USER_SWIPES_REF.child(currentUser).child(cardID).setValue(swipeRef.key)



         })

            NOTIFICATIONS_REF.childByAutoId().updateChildValues(values)
        }

    } else {

    }

}

Мой плакат представляет собой структуру, которая содержит переменные, такие как строки UID и тому подобное. спасибо за всю помощь

1 Ответ

0 голосов
/ 03 октября 2019

Это не работает sendSwipeNotification(post: Poster, swipedRight: true).

При вызове функции (в данном случае) следует ожидать, что ей будет передан заполненный объект, а не класс объекта или сама структура (структура Poster)в данном случае)

Другими словами, вы отправляете фактическую модель Struct в sendSwipeNotification, тогда как вы должны создавать объект структуры из модели Struct, заполняя его и передавая этот объект.

Так например

@objc func handleLike() {
    let createdByUserId = //get the id of who created the post (?)

    let myPostToPass = PostStruct(fromId: createdByUserId, postText: "hello!")

    //pass the created myPostToPass poster object
    sendSwipeNotification(post: myPostToPass, swipedRight: true) 
}

, а затем

func sendSwipeNotification(post: PostStruct, swipedRight: Bool) {
    guard let currentUser = Auth.auth().currentUser?.uid else {return}

    let fromId = post.fromId
    let msg = post.postText

    guard let cardID = topCardView?.cardViewModel.uid else { return }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...