Изображение в PFFile будет загружено для анализа вместо сохранения в локальном хранилище данных

Я использую Swift с Parse Framework (1.6.2). Я храню данные в локальном хранилище данных. Данные состоят из нескольких строк и изображения. Это изображение будет сохранено в PfFile, а затем будет добавлено в PfObject.

Теперь я удивлялся, почему изображение не сохраняется, пока не заметил, что мне нужно вызвать метод save() файла PFFile. Проблема в том, что изображение затем загружается в Parse, что мне не нужно. Я хочу, чтобы он был сохранен на локальном устройстве..

Есть ли решение для этого?

Спасибо

Редактировать:

Код работает так:

var spot = PFObject(className: "Spot")
let imageData = UIImageJPEGRepresentation(spotModel.getPhoto(), 0.05)
let imageFile = PFFile(name:"image.jpg", data:imageData)

spotObj.setObject(spotModel.getCategory(), forKey: "category")
spotObj.setObject(imageFile, forKey: "photo")


//if I simply would do this, the PFObject will be saved into the local datastorage, but the image won't be saved
spotObj.pin()

//if I do this, the image will be saved also BUT it won't be saved into the local data storage but will be uploaded to parse
imageFile.save()
spotObj.pin()

1 ответ

Решение

Хорошо, посмотрите здесь Сохранить в конечном итоге на PFObject с PFFile (Parse Local Datastore)?, Одно это точно, если вы позвоните сохранить в PFFile, он будет сохранен в онлайн-хранилище данных. Поэтому вы должны использовать PFFile.save(). Я думаю, что лучший вариант для вас - сохранить файл в какую-нибудь папку. локально и сохраните этот путь в PFObject. Разбор документации просто скажи это

"Pinning a PFObject is recursive, just like saving, so any objects that are pointed to by the one you are pinning will also be pinned. When an object is pinned, every time you update it by fetching or saving new data, the copy in the local datastore will be updated automatically. You don't need to worry about it at all."

Он рекурсивно вызывает.pin() для других объектов вашего основного объекта PFObject. Но если вы посмотрите на документацию по PFFile API, у него есть.pin(), что означает, что он не поддерживает сохранение PFFile в локальное хранилище данных. Поэтому я бы сказал, что вы должны сохранить их в некотором каталоге и сохранить путь в вашем PFObject.

Обновить

save:

Saves the file synchronously and sets an error if it occurs.

- (BOOL)save:(NSError **)error
Parameters
error
Pointer to an NSError that will be set if necessary.

Return Value
Returns whether the save succeeded.
Другие вопросы по тегам