Шаблоны для доступа к удаленным данным с Базовыми Данными?

2 ответа

For a situation like this you could use Cocoa's archiving facilities to save the photo objects (and an index) to disk between sessions, and just overwrite it all every time the app calls home to Flickr.

But since you're already using Core Data, and like the features it provides, why not modify your data model to include a "source" or "callType" attribute? At the moment you're implicitly creating a bunch of objects with source "Flickr API", but you can just as easily treat the different API calls as unique sources and then store that explicitly.

To handle deletion, the simplest way would be to clear the data store each time it's refreshed. Otherwise you'd need to iterate over everything and only delete the photo objects with filenames that weren't included in the new results.

I'm planning to do something similar to this myself so I hope this helps.

PS: If you're not storing the photo objects between sessions at all, you could just use two different contexts and query them separately. As long as they're never saved, and the central store doesn't have anything in it already, it would work just like you describe.

0
ответ дан 5 December 2019 в 23:16
поделиться

Мне кажется, что ваши первые инстинкты верны: вы должны использовать fetchrequests для обновления существующего магазина. Подход, который я использовал для импортера, был следующим: получить список всех файлов, которые могут быть импортированы, и где-нибудь его сохранить. Я предполагаю, что получение этого списка выполняется быстро и легко (просто имя и URL-адрес или уникальный идентификатор), но на самом деле импорт чего-либо займет немного больше времени и усилий, и пользователь может выйти из программы или захотеть что-то сделать. else, прежде чем весь импорт будет выполнен.

Затем, в отдельном фоновом потоке (это не так сложно, как кажется, благодаря NSRunLoop и NSTimer, погуглите "Core Data: Получите первый элемент этого списка, получите объект с Flickr или где-то еще и найдите его в базе данных Core Data (внимательно прочтите Apple Predicate Programming Guide по настройке эффективных, кэшированных NSFetchRequests). Если удаленный объект уже находится в Core Data, обновите информацию при необходимости, если не вставьте. Когда это будет сделано, удалите элемент из списка подлежащих импорту и перейдите к следующему.

Что касается проблемы с объектами, которые были удалены в удаленном хранилище, есть два решения: периодическая синхронизация или ленивая синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинальной вещи и всех ее метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? получите первый элемент этого списка, получите объект с Flickr или где-то еще и найдите его в базе данных Core Data (внимательно прочтите Apple Predicate Programming Guide по настройке эффективных, кэшированных запросов NSFetchRequests). Если удаленный объект уже находится в Core Data, обновите информацию при необходимости, если не вставьте. Когда это будет сделано, удалите элемент из списка подлежащих импорту и перейдите к следующему.

Что касается проблемы с объектами, которые были удалены в удаленном хранилище, есть два решения: периодическая синхронизация или ленивая синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинальной вещи и всех ее метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? получить объект с Flickr или где-либо еще и найти его в базе данных Core Data (внимательно прочтите Apple Predicate Programming Guide по настройке эффективных кэшированных запросов NSFetchRequests). Если удаленный объект уже находится в Core Data, обновите информацию при необходимости, если не вставьте. Когда это будет сделано, удалите элемент из списка подлежащих импорту и перейдите к следующему.

Что касается проблемы с объектами, которые были удалены в удаленном хранилище, есть два решения: периодическая синхронизация или ленивая синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинальной вещи и всех ее метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? получить объект с Flickr или где-либо еще и найти его в базе данных Core Data (внимательно прочтите Apple Predicate Programming Guide по настройке эффективных кэшированных запросов NSFetchRequests). Если удаленный объект уже находится в Core Data, обновите информацию при необходимости, если не вставьте. Когда это будет сделано, удалите элемент из списка, который будет импортирован, и перейдите к следующему.

Что касается проблемы с объектами, которые были удалены в удаленном хранилище, есть два решения: периодическая синхронизация или ленивая синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинальной вещи и всех ее метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? Если удаленный объект уже находится в Core Data, обновите информацию при необходимости, если не вставьте. Когда это будет сделано, удалите элемент из списка подлежащих импорту и перейдите к следующему.

Что касается проблемы с объектами, которые были удалены в удаленном хранилище, есть два решения: периодическая синхронизация или ленивая синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинальной вещи и всех ее метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? Если удаленный объект уже находится в Core Data, обновите информацию при необходимости, если не вставьте. Когда это будет сделано, удалите элемент из списка, который будет импортирован, и перейдите к следующему.

Что касается проблемы с объектами, которые были удалены в удаленном хранилище, есть два решения: периодическая синхронизация или ленивая синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинальной вещи и всех ее метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? периодическая синхронизация или отложенная синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинала и всех его метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? периодическая синхронизация или отложенная синхронизация по требованию. Означает ли импорт фотографии с Flickr импорт оригинала и всех его метаданных (я не знаю, какова политика в отношении прав собственности и т. Д.), Или вы просто хотите импортировать миниатюру и некоторую информацию? Если вы храните все локально, вы можете просто запускать проверку каждые несколько дней или недель, чтобы видеть, все ли в вашем локальном магазине присутствует также удаленно: если нет, пользователь может решить сохранить фотографию или удалить ее. Если вы храните только эскизы или превью, вам нужно будет подключаться к Flickr каждый раз, когда пользователь захочет увидеть полное изображение. Если он был удален, вы можете сообщить об этом пользователю и удалить его локально или пометить его как недоступный.

2
ответ дан 5 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: