Как сохранить атрибутную строку в поле Тип объекта сервера анализа - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь сохранить текст с атрибутами на сервере Parse. Тип поля - Object.

см. Код


            let htmlData = try attributedText
                .data(from: NSRange(location: 0,
                                    length: attributedText.length),
                      documentAttributes: documentAttributes)
            // htmlData is Data type
            let note = PFObject(className:"Note")
            note["Data"] = htmlData
            note.saveEventually { (success, error) in
                if (success) {
                    // success is false
                }
            }

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

несоответствие схемы для Note.Data; ожидаемый объект, но получил байты

Примечание: Note.Data тип столбца Object

Есть идеи, как это исправить?

Спасибо

1 Ответ

1 голос
/ 13 мая 2020

htmlData - это двоичное представление вашей атрибутированной строки. Двоичные данные не могут быть напрямую сохранены в базе данных, поскольку сервер анализа не поддерживает поле объекта анализа типа BLOB . Вам нужно представление двоичных данных, которое совместимо с типом поля Parse Server, например типом String.

Вы можете преобразовать двоичные данные в base64 закодированные String который представляет собой представление ASCII, просто читаемый текст:

// Create binary data from attributed text
let htmlData = try attributedText.data(
    from: NSRange(location: 0, length: attributedText.length),
    documentAttributes: documentAttributes)

// Create string from binary data
let base64HtmlData = htmlData.base64EncodedData(options:[])

// Store string in Parse Object field of type `String`
let note = PFObject(className: "Note")
note["Data"] = base64HtmlData

Вам нужно будет убедиться в Parse Dashboard, что тип вашего столбца Data String.

Однако имейте в виду, что большие данные должны храниться в файлах синтаксического анализа, поскольку объекты синтаксического анализа ограничены размером 128 КБ . Кроме того, вам не нужны большие двоичные объекты данных в базе данных MongoDB, поскольку это отрицательно скажется на производительности при масштабировании.

...