У меня нет ничего, кроме проблем с NSUbiquitousKeyValueStore и его надежной синхронизацией между двумя устройствами. Это начинает сводить меня с ума. Безумный.
Я смотрю, как мой код вызывает:
[[NSUbiquitousKeyValueStore defaultStore] setObject:_someData forKey:@"SomeData"];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];
Но чаще всего данные никогда не отображаются на другом устройстве.
Я видел, как он синхронизировался в течение нескольких секунд, а в других случаях я ждал час и никогда не видел синхронизации. Я подключаю устройства к xcode и начинаю отладку, и иногда данные внезапно появляются, а иногда нет. Иногда это так.
После этого звонка, выхода и перезапуска приложения я вижу старые данные, если я их читаю, а не новые данные, которые я якобы только что опубликовал. На том же устройстве.
Когда приложение запускается, я звоню на:
_someData = [[NSUbiquitousKeyValueStore defaultStore] stringForKey:@"SomeData"];
Я предполагаю, что нет кода инициализации, который нужно запустить. Ни один пример, который я нашел, не подходит.
Когда это работает, это работает очень хорошо.
Затем сегодня вечером я просматривал журналы устройства и обнаружил это сразу после моего последнего выхода (и попытки отправить данные):
Jul 8 21:32:03 unknown syncdefaultsd[17296] <Warning>: Error writing storage for com.mycompany.myapp to /private/var/mobile/Applications/4AC8C56E-6060-408B-84F9-F7EC336221D9/Library/SyncedPreferences/com.mycompany.myapp.plist: Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)" UserInfo=0xde80d40 {NSFilePath=/private/var/mobile/Applications/4AC8C56E-6060-408B-84F9-F7EC336221D9/Library/SyncedPreferences, NSUnderlyingError=0xde80b20"The operation couldn’t becompleted. No such file or directory"}
Этот путь не является допустимым путем из моей песочницы приложений (неверный GUID ), поэтому мне интересно, является ли это корнем моих проблем. Я часто удаляю и повторно -устанавливаю приложение во время разработки, поэтому мне интересно, есть ли где-то кешированный старый путь, и он пытается синхронизировать эти данные. Есть ли способ очистить это?
Я знаю, что все мои права настроены правильно, поскольку иногда это работает.
[[NSUbiquitousKeyValueStore defaultStore] synchronize]
возвращается YES
.
Кто-нибудь еще видел эту проблему или эту ошибку? Есть ли что-то еще, что мне нужно делать, когда мое приложение запускается и когда я отправляю данные в облако? Согласно документам и примерам, это кажется довольно простым.