Je crée un nouveau contact par programmation. ça marche bien sauf adresse. Voici le code pour ajouter un contactiPhone: mise à jour Toutes les adresses (accueil, travail, autre) de contact
ABAddressBookRef libroDirec = ABAddressBookCreate();
ABRecordRef persona = ABPersonCreate();
ABRecordSetValue(persona, kABPersonFirstNameProperty, tempSingle.firstName , nil);
ABRecordSetValue(persona, kABPersonLastNameProperty, tempSingle.lastName, nil);
ABRecordSetValue(persona, kABPersonMiddleNameProperty, tempSingle.middleName, nil);
if([tempSingle.homeStreet1 length]>0 || [tempSingle.homeStreet2 length]>0 || [tempSingle.homeCity length]>0 || [tempSingle.homeState length]>0 || [tempSingle.homePostal length]>0 || [tempSingle.homeCountry length]>0)
{
ABMutableMultiValueRef multiHome = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];
NSString *homeStreetAddress=[NSString stringWithFormat:@"%@ %@",tempSingle.homeStreet1,tempSingle.homeStreet2];
[addressDictionary setObject:homeStreetAddress forKey:(NSString *) kABPersonAddressStreetKey];
[addressDictionary setObject:tempSingle.homeCity forKey:(NSString *)kABPersonAddressCityKey];
[addressDictionary setObject:tempSingle.homeState forKey:(NSString *)kABPersonAddressStateKey];
[addressDictionary setObject:tempSingle.homePostal forKey:(NSString *)kABPersonAddressZIPKey];
[addressDictionary setObject:tempSingle.homeCountry forKey:(NSString *)kABPersonAddressCountryKey];
//[addressDictionary setObject:@"US" forKey:(NSString *)kABPersonAddressCountryCodeKey];
bool didAddHome = ABMultiValueAddValueAndLabel(multiHome, addressDictionary, kABHomeLabel, NULL);
if(didAddHome)
{
ABRecordSetValue(persona, kABPersonAddressProperty, multiHome, NULL);
}
[addressDictionary release];
}
if([tempSingle.workStreet1 length]>0 || [tempSingle.workStreet2 length]>0 || [tempSingle.workCity length]>0 || [tempSingle.workState length]>0 || [tempSingle.workPostal length]>0 || [tempSingle.workCountry length]>0)
{
ABMutableMultiValueRef multiWork = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDictionary1 = [[NSMutableDictionary alloc] init];
NSString *workStreetAddress=[NSString stringWithFormat:@"%@ %@",tempSingle.workStreet1,tempSingle.workStreet2];
[addressDictionary1 setObject:workStreetAddress forKey:(NSString *) kABPersonAddressStreetKey];
[addressDictionary1 setObject:tempSingle.workCity forKey:(NSString *)kABPersonAddressCityKey];
[addressDictionary1 setObject:tempSingle.workState forKey:(NSString *)kABPersonAddressStateKey];
[addressDictionary1 setObject:tempSingle.workPostal forKey:(NSString *)kABPersonAddressZIPKey];
[addressDictionary1 setObject:tempSingle.workCountry forKey:(NSString *)kABPersonAddressCountryKey];
bool didAddWork = ABMultiValueAddValueAndLabel(multiWork, addressDictionary1, kABWorkLabel, NULL);
if(didAddWork)
{
ABRecordSetValue(persona, kABPersonAddressProperty, multiWork, NULL);
}
[addressDictionary1 release];
}
if([tempSingle.otherStreet1 length]>0 || [tempSingle.otherStreet2 length]>0 || [tempSingle.otherCity length]>0 || [tempSingle.otherState length]>0 || [tempSingle.otherPostal length]>0 || [tempSingle.otherCountry length]>0)
{
ABMutableMultiValueRef multiOther = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDictionary2 = [[NSMutableDictionary alloc] init];
NSString *otherStreetAddress=[NSString stringWithFormat:@"%@ %@",tempSingle.otherStreet1,tempSingle.otherStreet2];
[addressDictionary2 setObject:otherStreetAddress forKey:(NSString *) kABPersonAddressStreetKey];
[addressDictionary2 setObject:tempSingle.otherCity forKey:(NSString *)kABPersonAddressCityKey];
[addressDictionary2 setObject:tempSingle.otherState forKey:(NSString *)kABPersonAddressStateKey];
[addressDictionary2 setObject:tempSingle.otherPostal forKey:(NSString *)kABPersonAddressZIPKey];
[addressDictionary2 setObject:tempSingle.otherCountry forKey:(NSString *)kABPersonAddressCountryKey];
bool didAddOther = ABMultiValueAddValueAndLabel(multiOther, addressDictionary2, kABOtherLabel, NULL);
if(didAddOther)
{
ABRecordSetValue(persona, kABPersonAddressProperty, multiOther, NULL);
}
[addressDictionary2 release];
}
ABAddressBookAddRecord(libroDirec, persona, nil);
CFRelease(persona);
ABAddressBookSave(libroDirec, nil);
CFRelease(libroDirec);
Si je ne sauverai adresse ou seule adresse de travail ou seulement une autre adresse, le code fonctionne bien. mais si je sauvegarde toutes les adresses (Accueil, Travail et Autre) alors seulement la dernière adresse enregistrer aux contacts.S'il vous plaît suggérer comment puis-je résoudre cette erreur s'il vous plaît suggérer quel est le problème?
Quel est le message d'erreur ?? votre obtenir – satish
Il n'y a aucun message d'erreur. Le code ci-dessus fonctionne bien. tout d'abord désolé pour une description incomplète. J'ajoute aussi le travail et l'autre adresse après l'adresse de la maison afin que j'obtienne seulement le dernier détail d'adresse (l'autre adresse) quand je vois les contacts. maintenant je suis éditer mon message original – Rupesh