2011-04-21 104 views
1

我正在创建一个地址簿应用程序,所有的数据都存储到服务器,当用户会问,然后服务器将恢复到iPhone的所有联系人。通讯录保存图像的联系人编程方式

我的问题是如何发送图像到服务器以及如何我将能够恢复联系人图片,我才知道我的服务器将提供给我一个base64加密合成图像。

因此可以在任何帮助我如何执行图像提前保存和检索的地址簿编程方式

感谢

回答

5

您需要在NSData的以base64图像转换,然后你可以将其设置为联系人,检查以下代码中的“ABPersonSetImageData”。

ABRecordSetValue(newPerson, kABPersonOrganizationProperty,data.name, &error); 

     ABMutableMultiValueRef multiURL = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
     ABMultiValueAddValueAndLabel(multiURL, homePageURL, kABPersonHomePageLabel, NULL); 
     ABRecordSetValue(newPerson, kABPersonURLProperty, multiURL,&error); 
     CFRelease(multiURL); 

     ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
     ABMultiValueAddValueAndLabel(multiPhone, contactNumber, kABPersonPhoneMobileLabel, NULL); 
     ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,&error); 
     CFRelease(multiPhone); 

     ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
     ABMultiValueAddValueAndLabel(multiEmail, emailIDs, kABHomeLabel, NULL); 
     ABRecordSetValue(newPerson, kABPersonEmailProperty, multiEmail, &error); 
     CFRelease(multiEmail); 

     ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType); 
     NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init]; 
     [addressDictionary setObject:toAddress forKey:(NSString *) kABPersonAddressStreetKey]; 
     [addressDictionary setObject:@"Amsterdam" forKey:(NSString *) kABPersonAddressCityKey]; 
     [addressDictionary setObject:@"Amsterdam" forKey:(NSString *) kABPersonAddressStateKey]; 
     [addressDictionary setObject:@"00000" forKey:(NSString *) kABPersonAddressZIPKey]; 
     [addressDictionary setObject:@"Netharland" forKey:(NSString *) kABPersonAddressCountryKey]; 
     ABMultiValueAddValueAndLabel(multiAddress, addressDictionary, kABHomeLabel, NULL); 
     ABRecordSetValue(newPerson, kABPersonAddressProperty, multiAddress,&error); 
     CFRelease(multiAddress); 

     NSData *data1 = UIImagePNGRepresentation([UIImage imageNamed:data.titleImg]); 
     ABPersonSetImageData(newPerson, data1, &error); 


     ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error); 
     ABAddressBookSave(iPhoneAddressBook, &error); 
+0

谢谢Saurabh,但是如果我要直接在base64格式的图像从服务器恢复,那么这个事情将是可能的?或者我只需要将其转换为nsdata,然后在我的应用程序中使用? – 2011-04-21 12:33:33

+1

此网址http://www.cocoadev.com/index.pl?BaseSixtyFour将帮助您将base64字符串转换为nsdata .. – Saurabh 2011-04-21 12:39:01

相关问题