2015-10-20 8 views
1

Я создаю приложение для обмена фотографиями, используя синтаксический анализ в качестве моего бэкэнда. Теперь я хочу, чтобы обновить атрибут numberOfLikes каждого объекта фотографии после того, как пользователь нажимает на кнопку, как, используя:iOS Объекты обновления Parse.com

[photoObject incrementKey:@"numberOfLikes"]; 
[photoObject saveInBackground]; 

Мой вопрос, позволяет сказать, что несколько пользователей понравилось ту же фотографию в то же время, будут ли эти подобные запросы быть в очереди обработки? (Будет ли Parse обрабатывать их один за другим?) Предполагая, что эта фотография имеет 0 нравится, тогда 5 пользователям нравится в то же время, учитывая, что условия сети одинаковы, будет ли конечный результат после сохранения 1 или 5?

Извините, если этот вопрос выглядит глупо или мое описание в замешательстве. Я довольно новичок в Parse. Благодарю.

ответ

1

Некоторые функции в Parse являются атомарными, incrementKey оказывается одним из них.

https://parse.com/questions/concurrency-management-in-parse

Метод incrementKey атомична при сохранении. Таким образом, процесс выглядит следующим образом:

Игрок A вызывает метод incrementKey на Призе и пытается сохранить (с функцией обратного вызова.) Игрок B вызывает метод incrementKey в Призе и пытается сохранить (с помощью функция обратного вызова.) либо игрок А или обратный вызов игрока в прогонов numberOfWins равно 6. остальные игроки обратного вызова прогонов numberOfWins является 7.

Вы также могли бы реализовать какой-то механизм блокировки с помощью этих функций, как в этом вопросе.

https://parse.com/questions/locking

решение Давида умна и работы (incrementKey атомарный). Если объект GameRequest создан со значением «претендентов»: 0, то каждый претендент может вызвать incrementKey: @ «конкурсанты». Если после сохранения значение конкурсантов равно 1, то они являются первыми совершенными соперниками. Мне особенно нравится это решение, так как оно работает и для N игровых игр. Аналогично, вы можете использовать addUnique: (также атомный), чтобы добавить идентификатор пользователя в список претендентов.

Наконец, чтобы ответить на ваш вопрос, это должно быть 5, поскольку они выполняются один за другим, а не одновременно.

+1

Вау благодарит вас за этот прекрасный ответ! Хотел бы я дать вам больше репутации! Спасибо! –

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