Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 更新通讯簿时发生SQLite错误_Iphone_Cocoa Touch_Addressbook_Abaddressbook - Fatal编程技术网

Iphone 更新通讯簿时发生SQLite错误

Iphone 更新通讯簿时发生SQLite错误,iphone,cocoa-touch,addressbook,abaddressbook,Iphone,Cocoa Touch,Addressbook,Abaddressbook,我正试图找到一种方法来修改通讯录记录,它在所有操作系统上都能正常工作(不管怎样,3.0版后),并能与谷歌联系人/Outlook正确同步 我尝试将新的电子邮件数据写入现有记录并将其写回。在iOS4上进行测试时,这种方法在几天内都运行良好,我认为我已经到家了,但我发现在iOS 3.1.3上,ABAddressBookSave调用抛出了一个SQLite数据库错误,抱怨试图创建重复条目: CPSqliteStatementPerform: constraint failed for INSERT INT

我正试图找到一种方法来修改通讯录记录,它在所有操作系统上都能正常工作(不管怎样,3.0版后),并能与谷歌联系人/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
当我尝试删除旧条目并替换为全新条目时,它会导致重复的电子邮件地址条目(我猜这是因为同步过程将其视为新记录并尝试合并它们,可能是在与谷歌同步时)

Apple docs(“iPhone通讯录编程指南”)提供了创建和删除条目的示例,但没有提供部分更新的示例

有什么想法吗?所有建议均获衷心接纳

干杯

彼得·约翰逊


可溶性应用程序(www.solubleapps.com)

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

在记录被修改后,我在记录上做了一个addressbookaddrecord——虽然这在刚创建的新记录上是有意义的,但当它是一个已更新的旧记录时,可能是SQL错误的原因,在地址簿中为它创建了两个条目


我仍然需要在3.1.3上测试这个理论(当我可以借用我兄弟的touch:)时),但我希望这能帮助一些人

编辑以添加3.1.3上的崩溃是在ABAddressBookSave期间发生的