0
我正在以编程方式创建新联系人。除了地址以外,它运作良好以下是该代码添加联系人iPhone:更新联系人的所有地址(首页,工作,其他)
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);
如果我只保存家庭住址或工作只有地址或其他唯一地址,然后代码工作得很好。但如果我保存所有地址(家庭,工作和其他),然后只有最后地址保存到contacts.Please建议如何解决这个错误 请提出什么是错的?
什么是您收到错误消息? – satish 2011-02-03 17:22:42
没有错误信息。以上代码运行良好。首先抱歉不完整的描述。我也在家庭地址后添加工作和其他地址,所以当我看到联系人时,我只能得到最后的地址详细信息(其他地址)。现在我正在编辑我的原始帖子 – Rupesh 2011-02-03 17:22:42