2016-05-19 1 views
0

Как заголовок указывает, я ищу простейший способ синхронизации пользовательских данных (целые числа, булевы, NSDates и т. Д.) Среди небольшого числа лиц (на данный момент я просто думаю об обмене данными между двумя людьми). В приложении пользователи могут заполнять массив экземплярами настраиваемого объекта, и эти данные используются для заполнения UITableview. Предполагая, что все пользователи в выбранной группе синхронизировали свои устройства, все они должны видеть одни и те же данные в представлении таблицы.Каков наилучший способ синхронизации данных среди небольшого числа пользователей в swift?

Моя первоначальная идея состояла в том, чтобы написать в json-файл в общей папке Dropbox или Google Диске. Однако, просмотрев онлайн, я обнаружил, что этот метод, вероятно, приведет к повреждению данных. Cloudkit разрешает публичную или частную синхронизацию (только одну учетную запись), между ними нет ничего. Я видел некоторые сообщения, которые рекомендуют использовать Parse, но эта служба теперь уже на пути.

Кто-нибудь знает (предпочтительно свободный) способ сделать это?

+1

Планируете ли вы иметь только 2 или 3 пользователей в своем приложении или планируете использовать приложение для бесконечных пользователей, но взаимодействие происходит только между 2 или 3? Если последнее, я бы предложил Firebase. –

+1

CloudKit будет работать для этого, используя общедоступную базу данных. Вам просто нужно контролировать, какие части общедоступных данных, которые каждый пользователь видит в приложении. – rmaddy

+0

Спасибо за ответ. Пока что приложение предназначено для личного использования и будет иметь только несколько пользователей. Тем не менее, я бы хотел, чтобы его масштабировать и выпускать в App Store в будущем. Посмотрев сайт Firebase, он кажется многообещающим. Я это проверю! – kamisama42

ответ

1

У вас есть несколько вариантов: базы данных

CloudKit - система баз данных CloudKit имеет концепцию публичной базы данных, которая делает именно то, что вы хотите. Он довольно прост в использовании и является «бесплатным» с учетной записью разработчика Apple. Единственным недостатком является то, что это только для устройств Apple (AFAIK).

Firebase - Firebase от Google в основном идентичен CloudKit в концепции и функциях, но работает на нескольких платформах. Он привязан к экосистеме Google, поэтому для использования вами все нужно предоставить учетную запись Google, чтобы использовать ее, но в наши дни это небольшая проблема.

Realm - с чистой точки зрения юзабилити, Realm is BY FAR - самое простое решение для хранения данных, которое я видел на iOS. Тем не менее, сейчас функция совместного доступа ограничена, поддержка CloudKit запланирована, но в настоящее время все, что есть, составляет this. Если вам нужно только локальное хранилище на данный момент, то обязательно сохраните его в своем списке.

Независимо от того, какой двигатель вы выберете, пользователи будут ограничены определенными видами данных через свой собственный код. Я бы посоветовал вам сохранить каждую запись с именем пользователя создателя, а затем иметь другую таблицу, содержащую разрешения на чтение и запись, поэтому, например, в записи для «maurymarkowitz» есть «bobsmith, ronsmith, jonsmith». Вы можете получить эти записи при входе в систему, а затем использовать их в качестве входных данных для каждого примера, используемого для получения записей.

0

Спасибо за все полезные ответы. Я закончил использовать cloudkit/coredata, и он отлично подходит для моей цели. Я просто использовал общедоступный параметр и предоставлял каждому набору пользователей, которые делят данные друг с другом с уникальным идентификатором, который добавляется к любым записям, которые они загружают. Когда пользователь синхронизирует свои данные с облаком, приложение выполняет запрос только для тех записей, которые содержат идентификатор пользователя. Таким образом, несколько пользователей могут синхронизировать данные между собой, даже если они не используют учетную запись iCloud.

 Смежные вопросы

  • Нет связанных вопросов^_^