2010-07-08 5 views

risposta

12

ABRecord è un tipo C opaco. Non è un oggetto nel senso dell'Obiettivo-C. Ciò significa che non è possibile estenderlo, non è possibile aggiungere una categoria su di esso, non è possibile inviarlo. L'unica cosa che puoi fare è chiamare le funzioni descritte in ABRecord Reference con l'ABRecord come parametro.

Si potrebbe fare due cose per essere in grado di mantenere le informazioni a cui fa riferimento l'ABRecord arround:

  1. ottenere l'ID ABRecords da ABRecordGetRecordID(). ABRecordID è definito come int32_t in modo da poterlo trasmettere a un NSInteger e memorizzarlo dove preferisci. In seguito è possibile recuperare il record da ABAddressBookGetPersonWithRecordID() o ABAddressBookGetGroupWithRecordID(). Ma consapevoli, il record potrebbe essere modificato o addirittura eliminato dall'utente o da un'altra app nel frattempo.

  2. Copiare tutti i valori all'interno del record in una sottoclasse standard NSObject e utilizzare NSCoding o altre tecniche per memorizzarlo. Non sarà quindi possibile trarre vantaggio da modifiche o aggiunte al record che l'utente avrebbe potuto effettuare.

Di causa è possibile combinare entrambi gli approcci.

+0

Grazie per la risposta, questo porta alla comprensione! –

+0

molto utile. Ero alle prese con un modo di tornare a una persona dopo aver salvato una copia nei dati principali della mia app. Quindi questo ha aiutato. – CW0007007