Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Ios 我可以在没有ABPersonViewController的情况下编辑来自ABaddressBook的现有联系人吗?_Ios_Objective C_Abaddressbook_Abpersonviewcontroller - Fatal编程技术网

Ios 我可以在没有ABPersonViewController的情况下编辑来自ABaddressBook的现有联系人吗?

Ios 我可以在没有ABPersonViewController的情况下编辑来自ABaddressBook的现有联系人吗?,ios,objective-c,abaddressbook,abpersonviewcontroller,Ios,Objective C,Abaddressbook,Abpersonviewcontroller,我已经创建了一个自定义通讯簿,可以复制带有联系人的本机通讯簿列表。现在,在详细视图控制器中,我设法添加了一个新联系人,并从本机通讯簿中删除了一个现有联系人。我想编辑现有联系人并将更改保存到本机通讯簿。以下示例假定您拥有要在recordID中更改的记录的ID, 并且您希望将其地址更改为存储在addressDictionary中的新地址 CFErrorRef error = nil; const ABAddressBookRef addressBookRef = ABAddressBookCreat

我已经创建了一个自定义通讯簿,可以复制带有联系人的本机通讯簿列表。现在,在详细视图控制器中,我设法添加了一个新联系人,并从本机通讯簿中删除了一个现有联系人。我想编辑现有联系人并将更改保存到本机通讯簿。

以下示例假定您拥有要在
recordID
中更改的记录的ID, 并且您希望将其地址更改为存储在
addressDictionary
中的新地址

CFErrorRef error = nil;
const ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions (NULL, &error);
if (addressBookRef != nil) {
    ABRecordRef record = ABAddressBookGetPersonWithRecordID(addressBookRef, recordID);
    if (record != nil) {
        ABMultiValueRef addressesRef = ABRecordCopyValue(record, kABPersonAddressProperty);
        if (addressesRef != nil) {
            // Addresses found
            ABMutableMultiValueRef tmpAddressesRef = ABMultiValueCreateMutableCopy(addressesRef);
            if (tmpAddressesRef != nil) {
                CFIndex addressIndex = ABMultiValueGetIndexForIdentifier (addressesRef,addressID);
                bool OK;
                OK = ABMultiValueReplaceValueAtIndex(tmpAddressesRef, (__bridge CFTypeRef)addressDictionary, addressIndex);
                if (OK) {
                    OK = ABRecordSetValue(record, kABPersonAddressProperty, tmpAddressesRef, &error);
                    if (OK) {
                        OK = ABAddressBookSave(addressBookRef, &error);
                        if (OK) {
                            // Do something
                        } else {
                            // Could not save address book
                        }
                    } else {
                        // Could not store modified address
                    }
                }
                else {
                    // Could not replace address
                }
                CFRelease(tmpAddressesRef);
            } // Mutable copy of addresses could be created
            else {
                // Could not create mutable copy of addresses
            }
            CFRelease(addressesRef);
        } else {
            // Did not find addresses
        }
    } else {
        // Could not read record
    }
    CFRelease(addressBookRef);
}
else {
    // Could not open address book
}