Похоже, ваше приложение загружало данные из веб-службы, записывало их в базу данных и затем повторяло эти шаги, когда вы часто нажимали кнопку.
В зависимости от архитектуры вашего приложения, вы можете пытаться записывать в базу данных более одного раза из разных потоков, что запрещено библиотекой sqlite.
Не видя некоторого кода, невозможно сказать, что происходит.
В идеале вы должны настраивать очереди для записи в вашу базу данных, а в Cocoa / Cocoa Touch это может быть легко достигнуто с помощью NSOperation
и NSOperationQueue
. Используя эти классы, вы можете инкапсулировать поведение загрузки данных, разбора их на объекты модели и записи их в базу данных для различных «операций», которые затем могут быть помещены в очередь. Вы также можете установить зависимости, чтобы одна операция не выполнялась, если другая еще не завершена. Все это настраивается.
Имейте в виду, что использование NSOperation входит в мир многопоточности, и если вы обновляете пользовательский интерфейс в любой момент, вам нужно будет сделать это в главном потоке, поскольку UIKit не является поточно-безопасным.