Неверный сбор Reference - PullRequest
0 голосов
/ 11 апреля 2020

Я получаю следующее сообщение об ошибке ...

Завершение работы приложения из-за необработанного исключения «FIRInvalidArgumentException», причина: «Неверная ссылка на коллекцию. Ссылки на коллекции должны иметь нечетное количество сегментов, но messages / rpt0poc9PIQ7UDcK4FYNDuXOAqo2 имеет 2 '

... когда я вызываю следующую функцию ...

func loadMessages() {
    //get last 11 messages
    FIRFirestoreService.shared.reference(to: .messages).document(currentId()).collection(chatRoomId).order(by: "date", descending: true).limit(to: 11).getDocuments { (snapshot, error) in

        guard let snapshot = snapshot else {
            self.initialLoadComplete = true
            // start listening for new chat
            return
        }

        let sorted = ((dictionaryFromSnapshots(snapshots: snapshot.documents)) as NSArray).sortedArray(using: [NSSortDescriptor(key: "date", ascending: true)]) as! [NSDictionary]

        // remove bad messages
        self.loadedMessages = self.removeBadMessages(allMessages: sorted)

        self.insertMessages()

        self.initialLoadComplete = true

        print("we have \(self.messages.count) messages loaded")

        // get picture messages

        // get old messages in background
        // start listening for new chats

    }
}

И это как добавить данные в Firestore ...

struct OutgoingMessage {

    let messageDictionary: NSMutableDictionary

    init(message: String, senderId: String, senderName: String, date: Date, status: String, type: String) {

        messageDictionary = NSMutableDictionary(
            objects: [message, senderId, senderName, dateFormatter().string(from: date), status, type],
            forKeys: ["message" as NSCopying, "senderId" as NSCopying, "senderName" as NSCopying, "date" as NSCopying, "status" as NSCopying, "type" as NSCopying]
        )
    }

    func sendMessage(chatRoomId: String, messageDictionary: NSMutableDictionary, memberIds: [String], membersToPush: [String]) {

        let messageId = UUID().uuidString
        messageDictionary["messageId"] = messageId

        for memberId in memberIds {

            FIRFirestoreService.shared.reference(to: .messages).document(memberId).collection(chatRoomId).document(messageId).setData(messageDictionary as! [String : Any])
        }

        // update recent chat

        // send push notification
    }
}

Почему Firestore считает ссылку на коллекцию "messages / rpt0poc9PIQ7UDcK4FYNDuXOAqo2"? Куда я иду не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...