2011-02-01 7 views
0

Travailler sur une application qui fait un usage intensif du cadre du carnet d'adresses. Il existe un certain nombre de contrôleurs de vue qui interagissent avec les données du carnet d'adresses, et ils fonctionnent tous très bien. Sauf un, et ça me tue.Address Book propertyID - type inconnu?

J'ai une classe qui encapsule l'accès du carnet d'adresses, dans une méthode telle que:

- (NSDictionary*)labelsToValues:(ABPropertyID)propertyID { 
ABAddressBookRef addressBook = ABAddressBookCreate(); 
ABRecordRef aRecord = ABAddressBookGetPersonWithRecordID(addressBook, [self recordIdFromAddressBookId]); 

NSMutableDictionary *entries = [NSMutableDictionary dictionary];  

ABMultiValueRef multiValueProperty = ABRecordCopyValue(aRecord, propertyID); 
// do some other stuff 

Et puis je l'appelle dans des endroits comme celui-ci:

- (NSDictionary*)emailProperties { 
return [self labelsToValues:kABPersonEmailProperty]; 
} 

Et ça marche! Bien sûr que oui, j'envoie le message avec un argument qui est un cadre Constant du carnet d'adresses. Donc ça devrait toujours marcher!

Mais ce n'est pas le cas. Ce mailProperties particulier: message est celui que j'appelle à plusieurs endroits ... et parfois cela fonctionne, mais parfois non. Quand les choses tournent mal, je le mets à travers le débogueur et je reçois quelque chose comme ceci: enter image description here

Comment est-ce possible? Encore plus bizarre, si je "prime" le View Controller problématique en regardant d'autres Contrôleurs de Vue où tout se comporte comme prévu, puis je reviens au View Controller problématique, tout fonctionne bien. Donc, je suppose que c'est une sorte d'erreur de liaison, mais je ne suis pas sûr de savoir comment commencer à résoudre ce problème.

+0

duplication possible de [Carnet d'adresses constantes évaluées comme zéro] (http://stackoverflow.com/questions/1235131/address-book-constants-evaluating-as-zero) – bpapa

Répondre