Firebase iOS Swift: невозможно сохранить объект типа FIRTimestamp в - PullRequest
0 голосов
/ 06 марта 2020

У меня есть объект item, который я хотел бы сохранить на базе Firebase, но отметка даты не позволяет этому случиться.

Вот моя структура Item:

    struct Item{
    var id: String = ""
    var itemName: String = ""
    var imageUrl: String = ""
    var price: String = ""
    var description = ""
    var categoryId = ""
    var postedBy = ""
    var postedByName = ""
    var coordinate = ""
    var date = Timestamp()


    func toDictionary() -> [String: Any]{
        return [ItemFields.ID: id,
                ItemFields.ITEM_NAME: itemName,
                ItemFields.IMAGE_URL: imageUrl,
                ItemFields.PRICE: price,
                ItemFields.DESCRIPTION: description,
                ItemFields.CATEGORY_ID: categoryId,
                ItemFields.POSTED_BY: postedBy,
                ItemFields.POSTED_BY_NAME: postedByName,
                ItemFields.COORDINATE: coordinate, 
                ItemFields.DATE: date
        ]
    }
}

При сохранении элемента

 ref.setValue(item.toDictionary, withCompletionBlock: {(err, ref) in

я получаю эту ошибку:

Не удается сохранить объект типа FIRTimestamp на дату. Может хранить только объекты типа NSNumber, NSString, NSDictionary и NSArra

1 Ответ

2 голосов
/ 06 марта 2020

Firebase предлагает две базы данных, базу данных в реальном времени и Firestore. Вы не сказали, в какую базу данных вы пишете, но тот факт, что вы звоните setValue(), предполагает, что вы используете базу данных реального времени.

База данных реального времени не имеет данных типа Timestamp. Timestamp - это концепция Firestore, и в сообщении об ошибке говорится, что вы не можете записать объект типа Timestamp в базу данных реального времени. Если вы хотите сохранить момент времени в Базе данных реального времени, вам следует хранить стандартное unix время в миллисекундах, представленное как 64-разрядное целое число.

...