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:
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.
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.
Grazie per la risposta, questo porta alla comprensione! –
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