成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone應用開發ABAddressBook相關API使用經驗

移動開發 iOS
iPhone應用開發ABAddressBook相關API使用經驗是本文要介紹的內容,iPhone應用開發時,在 ABAddressBook 通訊錄操作時遇到的各種問題與解決方法的知識匯總,來看本文詳解

iPhone應用開發ABAddressBook相關API使用經驗是本文要介紹的內容,iPhone應用開發時,在 ABAddressBook 通訊錄操作時遇到的各種問題與解決方法的知識匯總,十分難得的經驗總結。最近在研究這個東西,并且提交了程序。因為用了以下代碼而被reject。

1、mABPersonViewController = [[ABPersonViewController alloc] init];

2、[mABPersonViewController setAllowsDeletion:YES];

于是研究自己實現同樣功能,于是也發現了API里有問題……

備忘錄:

1、不要傳遞ABRecordRef,要堅持使用RecordID。比如下面代碼

  1. ABRecordRef recordRef = ABAddressBookGetPersonWithRecordID(addressBookRef,ABRecordGetRecordID([mPersonViewController displayedPerson])); 

你會發現,recordRef和[mPersonViewController displayedPerson]的地址不一定是相同的。這里mPersonViewController是任何一個 ABPersonViewController的實例,addressBookRef是你正在操作的AddressBook復本。因為它們來自不同的 AddressBook復本,所以地址不同,所以無法相互混用。

2、ABAddressBookHasUnsavedChanges,這 個函數是沒有用的,總是返回NO。搜google搜很久了,才發現這個函數原來是無效的。從iPhone OS 2.x版本開始到現在3.x還依然存在這個問題。

3、還有一個bug是,即便我沒有用setAllowsDeletion:YES這個非 法設置,使用以下代碼時還是可以看到刪除聯系人的按鈕的。

  1. - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
  2. shouldContinueAfterSelectingPerson:(ABRecordRef)person{  
  3.         [personViewController setDisplayedPerson:person];  
  4.        [personViewController setEditing:YES];  
  5.         [peoplePicker pushViewController:personViewController animated:YES];  
  6.     }  
  7.    return NO;  

上面代碼執 行后,打開的聯系人詳細信息的界面,是正在編輯的界面,而且底部帶有刪除按鈕……但是,通過任何其他方法都無法實現這個效果。比如點“編輯”按鈕 時把當前ABPersonViewController設置成setEditing:YES,是沒有刪除按鈕的……

問題:

因為 ABAddressBookHasUnsavedChanges總是返回NO,所以我通過判斷ABAddressBookRemoveRecord是否返 回YES來判斷通訊錄是否被修改。是的話,直接ABAddressBookSave。

但是,有時候會出現如下錯誤,google里搜索這個關鍵詞 的結果為0。

  1. sqlite3 error in CPRecordStoreSaveWithPreAndPostCallbacksAndTransactionType: cannot commit - no transaction is active 

后來嘗試下面這個之前提到的非法代碼,測試后發現,使用官方的“刪除聯系人”按鈕也會有這個錯誤提示……于是我就納悶了……不知道大家是怎么解決這個問題的?

1、mABPersonViewController = [[ABPersonViewController alloc] init];

2、[mABPersonViewController setAllowsDeletion:YES];

另外,要避免通訊錄整個丟失,我總結的規律是
 
1、必須總是使用同一個AddressBook復本,也就 是說,所操作的ABAddressBookRef地址是同一個。避免創建更多的復本,有時候退出程序時就有可能丟失整個數據庫……

2、多線程操作同一個AddressBook復本時,必須避免同時操作。

小結:iPhone應用開發ABAddressBook相關API使用經驗的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: CocoaChina
相關推薦

2011-08-22 14:12:48

iPhone開發NSTableView

2011-08-09 11:36:41

iPhoneUIPickerVieDEMO

2012-04-26 13:45:20

iPhone應用發布稅務相關手續

2011-08-09 13:22:31

iPhoneSqlite數據庫

2011-08-08 13:50:29

iPhone開發 NSOperatio 多線程

2011-08-08 14:07:49

iPhone開發 字體

2011-08-17 15:10:21

iPhone開發Web視圖

2011-07-27 10:16:41

iPhone SQLite 數據庫

2011-07-08 14:58:16

iPhone Xcode iOS

2011-07-19 09:46:38

2011-07-19 09:58:36

2009-12-31 10:21:53

Silverlight

2011-08-08 10:10:14

iPhone開發 圖片 方法

2011-08-08 16:56:44

iPhone 字符處理 視圖

2011-08-10 10:10:21

iPhoneUIPopoverCo

2011-08-09 17:29:29

iPhone文件屏幕

2011-08-08 14:57:46

iPhone Autoreleas Property

2011-08-11 10:16:23

iPhoneUIView視圖

2011-08-11 10:27:37

iPhoneUIView視圖

2011-08-05 14:48:06

iPhone應用 異步隊列
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲手机视频在线 | 欧美自拍一区 | 天天躁日日躁xxxxaaaa | 色欧美综合 | 久久精品中文字幕 | 黄色片视频 | h视频在线免费看 | 999久久久免费精品国产 | 国产日韩久久 | 免费看一级毛片 | 日韩色图视频 | 国产精品伦一区二区三级视频 | 日韩一区二区免费视频 | 国产91在线 | 中日 | 日本a∨精品中文字幕在线 亚洲91视频 | 成人免费视屏 | 中文字幕av亚洲精品一部二部 | 亚洲综合首页 | 午夜免费视频 | 日本成人片在线观看 | 一区二区三区四区不卡 | 久久精彩 | 亚洲一区二区三区免费观看 | 97精品久久 | 欧美精品三区 | 国产精品a久久久久 | 午夜影院在线免费观看视频 | 国产观看| 日韩在线成人 | 成人午夜在线 | 欧美成人aaa级毛片在线视频 | 亚洲精品中文字幕在线 | 日韩第一夜 | 日本在线视频一区二区 | 国产日韩精品一区 | 91久久久久| 久久久久久久一区 | 一区二区三区日韩精品 | 国产黄色大片 | 久久国际精品 | 国产精品海角社区在线观看 |