Xcode 10.1, Swift 4.2, Realm 3.12 (база данных)
У меня есть приложение Mac, в котором несколько пользователей работают совместно и данные синхронизируются на нескольких устройствах. Таким образом, данные постоянно меняются.
Во всем приложении я пишу код, который обновляет пользовательский интерфейс при синхронизации в фоновом режиме. Проблема, с которой я продолжаю сталкиваться, заключается в том, что, когда пользователь печатает NSTextField
, произойдет синхронизация (из-за изменений другого пользователя), и NSTextField
, где он печатает, внезапно вернется к новому значению синхронизации, и пользователь потеряет то, что они напечатали.
Вот демонстрационное приложение для Mac, которое я собрал, которое имитирует проблему. Если вы начинаете вводить данные в поле, каждые 10 секунд поле обновляется: https://d.pr/f/8iXjqx
Мне интересно, какие стратегии использовали другие разработчики Mac, чтобы избежать этих столкновений.
Есть ли способ указать NSTextField
не обновлять, если в нем присутствует курсор? Нужно ли сохранять значение в моей локальной базе данных при каждом нажатии клавиши, а затем каким-либо образом выполнять слияние при синхронизации?