2010-07-08 18 views

回答

12

ABRecord是一個不透明的C類型。它不是Objective-C意義上的對象。這意味着您無法擴展它,您無法在其上添加類別,也無法向其發送消息。您唯一能做的就是調用ABRecord Reference中描述的函數,並將ABRecord作爲參數。

你可以做兩件事情能夠保持在ABRecord引用的信息以防萬一:

  1. ABRecordGetRecordID()獲取ABRecords ID。 ABRecordID定義爲int32_t,因此您可以將其轉換爲NSInteger並將其存儲在任何地方。您可以稍後從ABAddressBookGetPersonWithRecordID()ABAddressBookGetGroupWithRecordID()獲取記錄。但意識到,記錄可能會被更改,甚至被用戶或其他應用程序刪除。

  2. 將記錄內的所有值複製到標準NSObject子類中,並使用NSCoding或其他技術來存儲它。那麼您將不會從用戶可能做出的記錄更改或添加中受益。

因爲你可以結合這兩種方法。

+0

謝謝你的回答,這會帶來理解! – 2010-07-09 05:04:26

+0

非常有用。在將副本保存到我的應用程序核心數據後,我一直在爲一個人的方式而苦惱。所以這有所幫助。 – CW0007007 2012-11-09 18:09:16