我正试图找到一种方法来修改通讯录记录,该记录在所有操作系统上都是相同的(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.solubleapps.com)
答案 0 :(得分:0)
看起来我可能已经解决了这个问题。
我在更改后在记录上做ABAddressBookAddRecord-虽然这是刚刚创建的新记录时有意义,但它可能是SQL错误的原因,当它是一个已更新的旧记录时,在地址簿中为它创建两个条目。
我仍然需要在3.1.3上测试这个理论(当我可以借用我兄弟的触摸:)),但我希望这有助于某人。