Основные данные /iCloud, заполнение с локальными ошибками выброса файла XML в iOS8

Надеюсь, это что-то простое, но я пока не смог найти исправление. У меня есть приложение, с помощью которого я пытаюсь реализовать iCloud и Core Data. Я бы хотел, чтобы он работал на iOS7 и iOS8.

Приложение представляет собой контрольный список / приложение для просмотра таблицы для предметов коллекционирования.

По сути, в приложении есть предварительно заполненный XML-файл, содержащий около 50000 файлов. Данные sqlite / core изначально настроены на 1 элемент. Пользователи могут из табличного представления выбирать группы для добавления в основное хранилище данных (чтобы не все 50000 элементов были включены). Когда пользователь выбирает группу, состоящую из 1-50 элементов, он анализирует xml для этих элементов и записывает их в основное хранилище данных. Когда пользователь выбирает группу с большим количеством файлов, он анализирует и добавляет их, но затем также выдает случайные ошибки "нет документа по URL" во время процесса синтаксического анализа. Приложение не падает, и все элементы, кажется, добавлены, но приложение перестает синхронизироваться с iCloud. Точная ошибка:

__45-[PFUbiquityFilePresenter processPendingURLs]_block_invoke(439): CoreData: Ubiquity:  
Librarian returned a serious error for starting downloads Error Domain=BRCloudDocsErrorDomain Code=5 
"The operation couldn’t be completed. (BRCloudDocsErrorDomain error 5 - No document at URL)" 
UserInfo=0x7fd7f54abea0 {NSDescription=No document at URL, 
NSFilePath=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-      0D52D833E28A/data/Library/Mobile    Documents/iCloud~com~xxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/C45FA553-6CA0-4C26-845B-B478EF7EAD60.1.cdt, 
NSUnderlyingError=0x7fd7f54aa200 "The operation couldn’t be completed. No such file or directory"} 
with userInfo {
NSDescription = "No document at URL";
NSFilePath = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/C45FA553-6CA0-4C26-845B-B478EF7EAD60.1.cdt";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. 
No such file or directory\" UserInfo=0x7fd7f5433240 {NSDescription=No such file or directory}";
} for these urls: (
"file:///Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile%20Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/C45FA553-6CA0-4C26-845B-B478EF7EAD60.1.cdt"
)

Затем я также получу ошибку "переместить" (иногда после завершения анализа):

[PFUbiquityTransactionLog moveFileToPermanentLocationWithError:](761): CoreData: Ubiquity:  
CoreData: Ubiquity: Error writing export log to file: file:///Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile%20Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt
error: Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" 
UserInfo=0x7fd7f49cdfd0 {NSSourceFilePathErrorKey=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt, 
NSUserStringVariant=(
Move
), NSDestinationFilePath=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt, 
NSFilePath=/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt, 
NSUnderlyingError=0x7fd7f497f430 "The operation couldn’t be completed. File exists"}
userInfo: {
NSDestinationFilePath = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxx~xxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt";
NSFilePath = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt";
NSSourceFilePathErrorKey = "/Users/zacharyfisher/Library/Developer/CoreSimulator/Devices/4B70FCFC-4704-4C83-B848-0D52D833E28A/data/Library/Mobile Documents/iCloud~com~xxxxxxx~xxxxxxx/CoreData/iCloud/nobody~sim43DA22C4-427B-5FCD-9B61-90CE79638F6B/tempLogs.nosync/iCloud/PZbSJk1f2RNB6ucDj0Y6VqL1KgXYAxi4LcApXONjvnQ=/ABE37211-02B7-4F20-B631-B5D91B23E9BE.1.cdt";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=17 \"The operation couldn\U2019t be completed. File exists\"";
NSUserStringVariant =     (
    Move
);

}

Есть мысли о том, как это исправить? Я пытаюсь внести слишком много изменений одновременно, и это приводит к сбою синхронизации основных данных /icloud? Любые мысли или указатели будут оценены.

Zack

1 ответ

Зак, это не ответ (у меня нет представителя, чтобы комментировать), но это может помочь вам встать на правильный путь. Я внедряю данные ядра iCloud и сталкиваюсь с тем, что похоже на ту же проблему с iOS 8... та же ошибка "Нет документа по URL" (для меня нет ошибки перемещения) и такая же неполадка в синхронизации данных. Два наблюдения:

  • Когда я запускаю свое приложение на двух устройствах, синхронизация основных данных изначально работает очень хорошо... например, в течение нескольких минут и нескольких обновлений. Затем я получаю сообщение об ошибке "Нет документа по URL".

  • Моя база данных.sqlite очень мала, и обновления, которые я пытаюсь сделать, являются скромными (например, добавление одной новой сущности), поэтому я не думаю, что размеры файлов или сложность обновления являются факторами.

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

Надеюсь это поможет. Буду признателен за сообщения о любом прогрессе, который вы делаете. Я боролся с этим в течение нескольких недель, и я близок к тому, чтобы отказаться и доставить приложение (которое является универсальным) без синхронизации данных iCloud.

Другие вопросы по тегам