iCloud Core Data "нет документа по URL"

У меня есть приложение с основными данными и icloud, чтобы позволить пользователю использовать одну и ту же базу данных на нескольких устройствах. Синхронизация работает большую часть времени, но иногда это не так, то есть некоторые транзакции просто пропущены.

Когда я проверяю консоль, я получаю сообщение об ошибке:

__45- [PFUbiquityFilePresenter processPendingURLs] _block_invoke (439): CoreData: Ubiquity: библиотекарь вернула серьезную ошибку для запуска загрузки. Error Domain = BRCloudDocsErrorDomain Code = 5 «Операция не может быть выполнена. (Ошибка BRCloudDocsErrorDomain 5 – Нет документа по URL)»

Довольно смешно это сообщение появляется, даже когда синхронизация работает.

Код подходит для последней версии Apple «Руководство по программированию iCloud для основных данных». МагазинURL кодируется следующим образом:

NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; NSURL *storeURL = [documentsDirectory URLByAppendingPathComponent:@"iCloudSample.sqlite"]; 

Код для параметров:

  storeOptions = @{NSPersistentStoreUbiquitousContentNameKey: @"iCloudSampleStore" , NSPersistentStoreUbiquitousContentURLKey: @"iCloudSampleURL"}; 

Код для магазина:

 NSPersistentStore *store = [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:storeOptions error:&error]; 

Политика слияния (MOC находится на основном уровне)

  _managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [_managedObjectContext setPersistentStoreCoordinator:coordinator]; _managedObjectContext.mergePolicy = [[NSMergePolicy alloc] initWithMergeType:NSMergeByPropertyObjectTrumpMergePolicyType]; 

Насколько я понимаю документы, делать не так уж много (?). Но я думаю, что я что-то упускаю, кто-нибудь имеет представление, что проверить, изменить, попробовать? Любой, у кого была такая же проблема? Любые идеи приветствуются!

2 Solutions collect form web for “iCloud Core Data "нет документа по URL"”

У меня такая же проблема и она решена, удалив persistentStore и добавив его снова во время работы приложения. Это всегда одна и та же проблема при выполнении нескольких изменений в первом устройстве, второе устройство не получает все изменения. Я использую следующий код, когда applicationDidBecomeActive сначала удаляет постоянное хранилище:

 var storeCoordinator:NSPersistentStoreCoordinator = persistentStoreCoordinator! var store:NSPersistentStore = storeCoordinator.persistentStores[0] as! NSPersistentStore var storeURL:NSURL = store.URL! storeCoordinator.removePersistentStore(store, error: nil) NSFileManager.defaultManager().removeItemAtPath(storeURL.path!, error: nil) 

После этого я снова добавляю persistentStore . Затем я получил все уведомления, так как это был первый запуск после установки, но с полной синхронизацией данных. он всегда работает, но я не знаю, правильно ли он справляется с этой проблемой.

Я считаю, что все изменения, сделанные в первом устройстве, всегда достигают второго устройства, но по какой-то странной причине они полностью не сливаются с локальными данными ядра. Я сделал некоторые странные наблюдения о проблеме iCloud-CoreData в:

https://stackoverflow.com/questions/32084952/core-data-to-icloud-doesnt-sync-all-changes

Я надеюсь, что это помогает.

Я обнаружил, что когда у меня был URL-адрес магазина . s на пути

(например, ---/com.companyName.project/--- )

 let applicationSupportDirectory = applicationSupportDirectoryURL.URLByAppendingPathComponent("com.companyName.project") let iCloudStoreFileName = "iCloud.sqlite" lazy var iCloudStoreURL: NSURL = { return self.applicationSupportDirectory.URLByAppendingPathComponent(self.iCloudStoreFileName) }() 

Когда я включил ведение журнала, перейдя в Edit Scheme... в Xcode для моего проекта и добавив:

 -com.apple.CoreData.SyntaxColoredLogging 1 

файл журнала в окне отладки показал, что путь, который он искал, был

 ---/com~companyName~project/--- 

Основные данные изменили . s до ~ s. Я удалил весь com.companyName.project из URL-адреса, и синхронизация, похоже, работает лучше. Но с базовыми данными и iCloud вы никогда не знаете, что за кулисами происходит много магии.

  • Хранилище iCloud с помощью приложения на основе Кордовы
  • Сохранить документы iOS 8 на iCloud Drive
  • CloudKit - Как сохранить запись, если не существует
  • iCloud и Core Data Error (Ubiquity: не получили метаданные базовой линии из URL-адреса метаданных)
  • Есть ли ограничение на количество записей CKReferenced в CloudKit?
  • HomeKit бросает ошибку 77 и 78
  • Как старые версии приложения справляются с новой моделью данных ядра?
  • Импорт данных в приложение iOS, теперь, когда iCloud заменил iTunes
  • Ошибка iCloud Cocoa 512
  • Мое приложение разбивается на UIDocumentPickerViewController
  • Версии UIDocument с NSFileVersion
  • Interesting Posts

    Приложение для камеры работает в фоновом режиме (многозадачность) IOS8?

    Enterprise App занимает больше времени, чтобы начать

    Коснитесь событий над двумя элементами dom?

    SLServiceTypeFacebook setInitialText не работает

    Стоит ли продолжать поддерживать iOS 4.x при выпуске iOS 6?

    Как определить изменения в подключении к Интернету в iOS, в стиле делегата?

    Изображение не отображается, возможно, из-за невозможности сохранения в пути к файлу

    Последовательное использование UIImageView в UITableViewCells в разных UITableViewControllers

    Facebook Мобильная версия комментариев слишком узкая в UIWebView на iPad

    Как изменить размер и цвет текста текста UIAlertAction

    Могу ли я поворачивать UIView без черных полос?

    Идентификатор отсутствует в указателях атрибутов xcode

    Как десериализовать строку JSON в NSDictionary? (Для iOS 5+)

    Функция Ionic 2 по функции не обновляет ngModel

    В чем разница между преобразуемыми и двоичными данными

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.