2011-04-21 103 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

相關問題