【问题标题】:Addressbook Save Image for contacts programmatically以编程方式保存联系人的地址簿图像
【发布时间】:2011-04-21 12:21:18
【问题描述】:

我正在创建一个地址簿应用程序,其中所有数据都存储到服务器,当用户询问时,服务器会将所有联系人恢复到 iPhone。

我的问题是如何将图像发送到服务器以及如何恢复联系人图像,我知道我的服务器将为我提供 base64 加密格式的图像。

那么任何人都可以帮助我如何以编程方式为地址簿执行图像保存和检索

【问题讨论】:

    标签: iphone ios4 iphone-sdk-3.0 addressbook abaddressbook


    【解决方案1】:

    你需要在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);
    

    【讨论】:

    • 谢谢Saurabh,但是如果我要从服务器恢复base64格式的直接图像,那么这件事怎么可能?或者我只需要将其转换为 nsdata 然后在我的应用程序中使用?
    • 这个 url cocoadev.com/index.pl?BaseSixtyFour 将帮助您将 base64 字符串转换为 nsdata..
    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多