ReverseGeoCode и Save приводят к CoreData

Предположим, у меня есть 1000 записей для высоты и долготы в coreData. я хочу сделать reverseGeoCoding для этих высоты и долготы и сохранить результат обратно в coreData. Основываясь на приведенной ниже проблеме, я решил поставить операцию reverseGeoCode в фоновом режиме.

  1. ReverseGeoCode требует времени, когда сетевое соединение медленное.
  2. мы должны использовать только один запрос геокодирования в минуту.

мой вопрос: как лучше всего обновлять coreData в вышеуказанной ситуации? - когда приложение входит в фоновый режим? (не забывайте, что будет доступно ограниченное значение backgroundTimeRemaining) - Или в фоновом потоке, когда приложение находится на переднем плане.

Короче говоря, для каждой координаты мне нужен адрес reverseGeoCoded. пожалуйста, дайте для подхода я должен следовать.


person Mohit Nigam    schedule 06.01.2013    source источник


Ответы (1)


Я бы предложил отдельный ManagedObjectContext, зарезервированный для этой цели. Это предотвратит любые проблемы блокировки с другими задачами CoreData и позволит вам иметь MOC для работы пользователя. Предположительно, пользователь не хочет сохранять свою работу только потому, что завершилась несвязанная фоновая задача, поэтому ему нужен собственный MOC!

Учитывая относительно медленные поиски (1 минуту), я бы сказал, что нужно сохранять изменения после каждого.

Вы не можете сделать это, когда приложение находится в фоновом режиме; вам нужно будет отменить все ожидающие запросы обратного геокодирования и возобновить их, когда вы вернетесь на передний план. Но я бы предложил использовать фоновый поток, когда вы находитесь на переднем плане.

Если вам нужно использовать эти объекты в других MOC, применяются обычные механизмы — отправьте уведомление или иным образом сообщите им, чтобы они могли получить новый.

person tooluser    schedule 06.01.2013