Так что именно вы пытаетесь сделать? Вот как это звучит:
Ваш запрос класса «Контакт», и как только вы запрашиваете его и находите объект по его идентификатору (объект, с которым вы ничего не делаете [PFObject *contact
]), вы создаете PFObject
для совершенно другого класса ?? Вы можете обойти все это, если просто хотите опубликовать PFObject
, но, может быть, вы пропустили другой код, который не имел отношения к вопросу? Но ладно. Чтобы ответить на ваш вопрос, saveEventually
работает рука об руку с локальным хранилищем данных, поэтому у вас не должно быть никаких проблем, как вы можете видеть, он вызывается, но ваши значения не сохраняются, как objectID. Идентификатор объекта создается автономно, поэтому он сохраняется и ничего больше. Я буквально пытался воспроизвести вашу ошибку всеми возможными способами, но не могу, это ваши значения, они возвращают ноль. Я даже использовал макросы (похоже, именно так вы настраиваете свои клавиши), эмулировал режим полета и т. Д. Чтобы проверить, запросите закрепленный объект и посмотрите, что он возвращает. Кроме того, лучше всего, когда вы выполняете обратный вызов, попытаться включить оператор if или случай переключения, который явно определяет его соответственно для лучшей практики:
{
if (succeeded) {
debt.parseID = newDebt.objectId;
}];
}];
Кроме того, будьте осторожны при размещении важных задач в блоке успеха, потому что важным элементом saveEventually является то, что если он не завершится до закрытия приложения и если объект все еще находится в памяти, он попытается снова, но если объект больше не находится в памяти, он попытается снова при следующем выполнении, но БЕЗ блока успеха.
Устраните неполадки со значениями свойств (self.contact | self.amount | self.incomingDebt), как вы их определяете
Мы прошли долгий путь от исходного сообщения, поэтому, пытаясь вернуть его, настоящей и единственной проблемой здесь является saveEventually
.
Сохраняет этот объект на сервере в неустановленное время в будущем, даже если Parse в данный момент недоступен.
Основная цель saveEventually
:
Используйте это, когда у вас может не быть надежного сетевого подключения и не нужно знать, когда сохранение завершится
Если ожидается отправка более 10 МБ данных, последующие вызовы приведут к тому, что старые сохранения будут автоматически удалены до тех пор, пока соединение не будет восстановлено и объекты в очереди не будут сохранены.
Вы не можете контролировать, когда это вызывается. Кроме того, при сохранении данные в конечном итоге кэшируются на локальном диске до тех пор, пока они не будут успешно загружены, поэтому закрепление одного и того же объекта является излишним. Сохранение в конечном итоге, если вы думаете об этом, является собственным локальным хранилищем данных, оно хранит их на локальном диске до тех пор, пока не будет доступен Интернет (локальное хранилище данных).
У вас есть два способа обойти это. Локальное хранилище данных — это функция, похожая на основные данные, позволяющая пользователям отказаться от NSFRC с помощью простого однострочного кода pin/pinInBackground:
. Вы можете просто закрепить объекты и, когда вы узнаете, что есть интернет, снова открепить и сохранить их в своем бэкэнде. В качестве альтернативы вы можете сделать это по-другому, немедленно вызвать доступность, а если нет Интернета, pin:
объект, иначе saveInBackground:
сначала. Или просто воспользуйтесь их политикой кэширования.
ССЫЛКИ :
person
soulshined
schedule
16.01.2015