Я обновляю локальное приложение, основанное на Core Data, для поддержки iCloud. Одна из задач, которую я ожидаю, - это то, что я называю «объектами акций» - данные семян, которые приложение обеспечивает при первом запуске, которые будут настраивать 99% пользователей.Основные данные, iCloud и фондовые объекты
Stock Объекты
Item A
Item B
Индивидуальные объекты
Tomatoes
Potatoes
Если пользователь запускает приложение в первый раз на новом устройстве, я думаю, что по умолчанию будет для воссоздание объектов запаса, которые будут слиты с настраиваемыми объектами из постоянного хранилища iCloud (Item A, Item B, Tomatoes, Potatoes), что приводит к беспорядку y пользовательский опыт.
Одним из подходов может быть проверка данных iCloud синхронно при первом запуске, и если он существует, не создавайте объекты запаса. Но, тем не менее, пользователь может быть в автономном режиме при первом запуске, а затем при втором запуске произойдет такое же нежелательное слияние локальных объектов с пользовательскими объектами iCloud.
Есть ли способы добавить логику в iCloud-слияния, так что приход настраиваемых объектов из облака (помидоры и картофель) может сигнализировать мне, чтобы удалить локальные объекты запаса (пункт А и элемент B), прежде чем они станут сияющими?
Спасибо!
Ну, я не уверен, что хочу нарушить работу пользователя с этой целью. Другая проблема заключается в том, что существуют целые сущности, полные объектов запасов, с которыми мне нужно иметь дело особым образом. Представьте себе объекты FoodType («Мясо», «Овощи», «Десерт» и т. Д.) В отношениях с предприятиями Foods. Даже если все их свойства совпадают, если они были созданы в разное время на разных устройствах, Core Data, похоже, воспринимает их как разные. Поэтому, когда происходит слияние, внезапно у меня есть два «Foodtypes» с мясом, с некоторыми продуктами, связанными с одним объектом, а некоторые связаны с другим. – ed94133
У меня был подобный случай. Я предоставил семенные объекты, которые были полезны - большинство из них никогда не менялись. Одна простая идея - добавить логический атрибут 'validated' и взять оттуда логику. Затем вы можете проверить эквивалентность и «объединить» в фоновом режиме без уведомления пользователя. – Mundi