在iOS 5.0 / XCode 4.2中使用带有ABAddressBook的VCards

时间:2011-12-21 09:27:01

标签: iphone ios addressbook abaddressbook vcard

我正在尝试保存地址簿中所有条目的副本,将其作为vcards保存到文件中,然后检索该文件(或该文件的某个版本)并将其添加回地址簿中需要它们,在后备环境中。我知道之前已经问过这个问题,但对于我的生活(以及我的新编程技巧),我无法让它发挥作用:

- (void)grabContacts
{
    ABAddressBookRef addressBook = ABAddressBookCreate();
    CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressBook);
    NSData *vcards = (NSData *)ABPersonCreateVCardRepresentationWithPeople(contacts);

    [vcards autorelease];

    NSError *error;
    NSFileManager *fileMgr = [NSFileManager defaultManager];


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    NSString *folderPath = [paths objectAtIndex:0]; 
    NSString *filePath = [folderPath stringByAppendingPathComponent:@"contacts.dat"];

   [NSKeyedArchiver archiveRootObject:vcards toFile:filePath];    

    NSLog(@"Documents directory: %@",
      [fileMgr contentsOfDirectoryAtPath: folderPath error:&error]);

   CFRelease(addressBook);
 }

我使用Copying contacts from one source to another中发布的解决方案作为接收端,但它不起作用,并且由于Apple方面的模糊文档,我已经破坏了我的大脑而没有结果。

提前致谢。

S上。

1 个答案:

答案 0 :(得分:0)

没关系。我发现了我的问题。我恢复文件时没有取消归档文件。愚蠢的我得到了我没有应得的编程,没有大量的酒精。