Не получено уведомление об обновлении NSMetaDataQuery
У меня есть следующий код:
// Main thread
NotificationCenter.default.addObserver( self,
selector:#selector(queryDidFinish),
name:NSNotification.Name.NSMetadataQueryDidFinishGathering, object:nil)
NotificationCenter.default.addObserver( self,
selector:#selector(queryDidUpdate),
name:NSNotification.Name.NSMetadataQueryDidUpdate, object:nil)
а также:
private var query = NSMetadataQuery() // Class level
func queryCloud()
{
// Called on main thread
query.searchScopes = [NSMetadataQueryUbiquitousDocumentsScope]
query.predicate = NSPredicate(format: "(%K like '*.jpg')",
NSMetadataItemFSNameKey)
queryHot.start()
}
@objc func queryDidFinish(notification: NSNotification)
{
print("This gets called once on main thread")
print("and the query can be read")
}
@objc func queryDidUpdate(notification: NSNotification)
{
print("This does not get called")
}
Итак, вышеприведенное "привыкло работать", на двух устройствах. Теперь ни одно из устройств не получает запрос queryDidUpdate(). Я пытался удалить приложение, включить и отключить облачные разрешения, войти и выйти из iCloud, перезагрузить устройства. Оба устройства могут считывать свое "замороженное" облако, но данные не передаются и уведомления о фазе в реальном времени не доставляются. Я провел несколько тяжелых испытаний (перенося сотни МБ изображений) между двумя устройствами в течение нескольких дней. И теперь все перестало работать.
Облачные токены для каждого устройства совершенно разные, но стабильные. Использование UIDocument для хранения в облаке.
Я что-то пропустил? Есть ли что-то, что мне нужно сбросить в iCloud? Есть ли статус, который я могу проверить где-нибудь?
Я не хочу менять идентификатор комплекта приложений, чтобы освободиться... Я хотел бы найти основную проблему. Спасибо за любые советы!
1 ответ
Код в порядке, но iCloud на устройстве был в состоянии. В конечном итоге я выключил и включил "iCloud Drive" (что отличается от простого входа в iCloud). После возврата настроек приложения все заработало.