Ошибка SQLite при обновлении адресной книги - PullRequest
1 голос
/ 04 января 2011

Я пытаюсь найти способ изменить запись адресной книги, которая будет работать одинаково на всех ОС (начиная с версии 3.0, в любом случае) и правильно синхронизироваться с контактами Google / Outlook.

Я пытался написать новуюотправить данные по электронной почте в существующую запись и выписать ее обратно.Это работало нормально в течение нескольких дней при тестировании на iOS4, и я думал, что я дома и сухо, но я обнаружил, что на iOS 3.1.3 вызов ABAddressBookSave выдает ошибку базы данных SQLite, жалуясь на попытку создания повторяющихся записей:

CPSqliteStatementPerform: constraint failed for INSERT INTO ABPerson (ROWID, First, Last, Middle, Organization, Kind, Nickname, Prefix, Suffix, FirstSort, LastSort, CreationDate, ModificationDate, CompositeNameFallback, StoreID, FirstSortSection, LastSortSection, FirstSortLanguageIndex, LastSortLanguageIndex) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); CPSqliteStatementReset: PRIMARY KEY must be unique

Когда я попытался удалить старую запись и заменить ее на совершенно новую, вместо этого возникли дублирующие записи адресов электронной почты (я предполагаю, что это потому, что процесс синхронизации рассматривал ее как новую запись и пытался объединить их,возможно при синхронизации с Google)

В документации Apple («Руководство по программированию адресной книги для iPhone») приводятся примеры создания и удаления записей, но не частичного обновления.

Есть идеи?Все предложения с благодарностью приняты

Приветствия

Питер Джонсон

Растворимые приложения (www.surableapps.com)

1 Ответ

0 голосов
/ 05 января 2011

Похоже, я мог бы решить это сам.

Я выполнял ABAddressBookAddRecord для записи после того, как она была изменена - хотя это имеет смысл, когда это новая запись, которая только что была создана, это, вероятно, было причиной ошибки SQL, когда это была старая запись, которая была обновлена , создав для него две записи в адресной книге.

Мне все еще нужно проверить эту теорию на 3.1.3 (когда я могу позаимствовать прикосновения моего брата :)), но я надеюсь, что это кому-нибудь поможет.

...