1

我正在尝试找到一种方法来修改地址簿记录,该记录在所有操作系统(无论如何都是 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 文档(“Address Book Programming Guide for iPhone”)提供了创建和删除条目的示例,但不提供部分更新的示例。

有任何想法吗?感谢所有建议

干杯

彼得·约翰逊

可溶性应用 (www.solableapps.com)

4

1 回答 1

0

看起来我可能已经自己解决了这个问题。

在记录被更改后,我正在对记录执行 ABAddressBookAddRecord - 虽然当它是刚刚创建的新记录时这是有道理的,但当它是已更新的旧记录时,它可能是 SQL 错误的原因,创建两个地址簿中的条目。

我仍然需要在 3.1.3 上测试这个理论(当我可以借用我兄弟的接触 :)),但我希望这对某人有所帮助。

于 2011-01-05T15:03:46.007 回答