有沒有人有過如何從iOS 4+的ABAddressBook獲得特定ABSource的例子?在iOS 4+中從ABAddressBook獲取特定的ABSource
回答
iOS 4+提供了新的API,允許從ABAddressBook中選擇特定的ABSource。這可能是有用的,因爲一些操作,例如創建ABGroup,在某些來源(即Exchange)中不受支持。
「並非所有源類型都支持組,更顯眼的是,Exchange不知道任何關於組的信息。」 - http://flavors.me/volonbolon#1a5/tumblr
附加是利用新API獲取可用於調用ABGroupCreateInSource()的特定類型的源的函數。
#define CFRELEASE_AND_NIL(x) CFRelease(x); x=nil;
ABRecordRef sourceWithType (ABSourceType mySourceType)
{
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef sources = ABAddressBookCopyArrayOfAllSources(addressBook);
CFIndex sourceCount = CFArrayGetCount(sources);
ABRecordRef resultSource = NULL;
for (CFIndex i = 0 ; i < sourceCount; i++) {
ABRecordRef currentSource = CFArrayGetValueAtIndex(sources, i);
CFTypeRef sourceType = ABRecordCopyValue(currentSource, kABSourceTypeProperty);
BOOL isMatch = mySourceType == [(NSNumber *)sourceType intValue];
CFRELEASE_AND_NIL(sourceType);
if (isMatch) {
resultSource = currentSource;
break;
}
}
CFRELEASE_AND_NIL(addressBook);
CFRELEASE_AND_NIL(sources);
return resultSource;
}
ABRecordRef localSource()
{
return sourceWithType(kABSourceTypeLocal);
}
ABRecordRef exchangeSource()
{
return sourceWithType(kABSourceTypeExchange);
}
ABRecordRef mobileMeSource()
{
return sourceWithType(kABSourceTypeMobileMe);
}
Xyzzycoder-
您的解決方案工作得很好,如果已經有一個localSource,但如果沒有一個只是返回NULL。
有沒有辦法來爲localSource創建一個ABRecordRef?我需要能夠將我的聯繫人存儲到非同步源。
乾杯
彼得,在什麼情況下不會有本地的來源? – xyzzycoder 2011-01-20 00:01:40
真的想知道如何創建自己的source.Just象小組交流創建與你不需要編輯默認源記錄,但創造自己的一個,什麼是最奇妙的是,地址簿會將它們自動鏈接在一起
代碼有錯誤,這就是爲什麼它總是返回兩個,因爲方法:ABRecordGetRecordType不是ABSource的一部分。它僅包括:
kABPersonType用於人員記錄 kABGroupType用於組記錄。 源記錄的kABSourceType。
要找出您必須使用的正確類型:ABRecordCopyValue(source,kABSourceTypeProperty)來代替! :)在我的iPhone上使用或不使用localSource時效果極佳。
祝你好運!
- 1. 訪問特定ABAddressbook組
- 2. 在iOS中從SQL表中獲取特定行?
- 3. ABAddressBook獲取生日財產
- 4. 從iOS中的iMusic庫中獲取特定的播放列表
- 5. IOS Dictonary獲取特定字的定義
- 6. 如何在iOS中從Url獲取特定值 - Swift 3
- 7. 從IOS中的特定日曆中獲取事件
- 8. 搜索ABAddressbook iOS SDK
- 9. 在ABAddressBook上獲取EXC_BAD_ACCESS保存
- 10. 在WF 4中捕獲特定的FaultExceptions
- 11. 獲取從特定的行
- 12. 從ArrayList中獲取特定的類
- 13. 從陣列中獲取特定的行
- 14. 如何在iOS中的Hijri獲取特定的日期格式?
- 15. 如何從文件中獲取特定行中的特定值?
- 16. 從file_get_content獲取特定值
- 17. 從DataGrid獲取特定值
- 18. 從NSMutableArray獲取特定值
- 19. 如何從特定的類中獲取特定的InnerText?
- 20. iOS NSDate獲取timezone特定日期?
- 21. 如何從Site.css中獲取特定頁面的特定樣式?
- 22. 從Rails中的特定字段中提取信息4表格
- 23. 在ABAddressBook
- 24. 從特定列中獲取值
- 25. angular.js從數組中獲取特定值
- 26. 從對象中獲取特定物品
- 27. 從ClassName獲取的所有元素中獲取特定元素?
- 28. LINQ從數組中獲取特定行
- 29. 從列表中獲取特定屬性
- 30. 從sql中獲取特定索引
讀者請注意,並非所有設備都有本地源(請參閱下面的註釋),因此您需要能夠處理所請求源不存在的情況。它也似乎不可能以編程方式創建本地源。 – xyzzycoder 2011-02-17 09:45:16
如何釋放複製的值?這是不必要的,因爲我不明白? – 2011-03-14 10:31:57
馬丁 - 好。現在應該修復泄漏。 – xyzzycoder 2011-03-30 02:14:51