Я хочу спросить о том, как использовать NSUserDefaults
в приложении watchOS. Являются ли его данные отличными от данных приложения iOS NSUserDefaults
?Является ли Apple изменением доступа NSUserDefaults от приложения iOS к приложению watchOS
Therearealotof StackOverflow вопросы по этой теме, и все они имеют одни и те же ответы. Тем не менее, к примеру
Watch приложений, которые разделяют данные с их IOS приложений с использованием общей группы контейнер должен быть переработан, чтобы обрабатывать данные по-разному. В watchOS 2, каждый процесс должен управлять собственной копией любых общих данных в локальном каталоге контейнеров . Для данных, которые фактически разделены и обновлены на , оба приложения требуют использования рамки Watch Connectivity для для перемещения этих данных между ними.
Однако все цитируемый текст исчез из the web page referred см this accepted answer. В настоящее время Apple Docs. Существует
Кроме того, iOS автоматически перенаправляет копию вашего приложения iOS на Apple Watch. Расширение WatchKit может читать эти настройки, используя объект NSUserDefaults, но он не может внести изменения в базу данных по умолчанию.
У меня 2 вопроса:
Какой из них правильный: все ответы StackOverflow вопросы я уже упоминал выше, или, Яблоко Docs
Какой механизм использования IOS для пересылки NSUserDefaults объект для приложения watchOS? Надежно ли это надеяться на будущую разработку и как последние данные обновляются. Может ли эта функция быть устаревшей в ближайшем будущем?
Большое спасибо
это будет другой вопрос. Чтобы изменить/обновить iOS 'NSUserDefaults' из приложения Watch Kit. Я собираюсь использовать 'sendMessage: replyHandler: errorHandler:', дождаться 'replyHandler:' ответ, что 'iOS' обновил свой собственный' NSUserDefaults', после чего используют последние данные 'NSUserDefaults' на часах.Является 'sendMessage: replyHandler: errorHandler:' подходит в этой ситуации. Большое спасибо – transang
@tranvansang Да, это один из способов сделать это. Вы также можете использовать 'transferUserInfo (_ :)' https://developer.apple.com/reference/watchconnectivity/wcsession/1615671-transferuserinfo, если обновление на стороне iOS может происходить в фоновом режиме. Кроме того, что касается вашего потока, если часы обновляют что-то в приложении iOS, не ждите, чтобы снова прочитать «NSUserDefaults». Просто отправьте свое обновление в приложение iOS и просто обновите часы соответствующим образом, не заново прочитав значения по умолчанию. Часы должны действовать как свое приложение. Отправьте сообщение и приступите к обновлению. Надеюсь, это поможет. – lostAtSeaJoshua
спасибо, что ответили. 'transferUserInfo' не может гарантировать, что данные обновляются на телефоне. Последующее чтение «NSUserDefaults» может возвращать неожиданные не обновленные данные. Кстати, я думаю, что есть компромисс между выбором метода передачи – transang