Oli*_*ver 14 iphone cocoa cocoa-touch vcf-vcard addressbook
我在我的iPhone应用程序中使用了AddressBook.framework,我想在Contacts.app中按照共享功能的方式复制一些内容.这基本上是将特定联系人vCard附加到电子邮件中.据我所知,文档中没有提到生成vCard的内容.
这是自己生成一个的情况吗?或者有什么可以帮助我吗?
pet*_*ert 19
完全同意Dave DeLong的回答.只想添加,因为我只是想创建一个vCard文件(.vcf)并将其附加到应用内电子邮件操作,我所做的是创建一个字符串,然后是一个临时文件,包含我拥有的所有vCard字段数据.
在我的例子中,我在我的NSManagedObject子类中创建了一个方法来返回一个-vCardRepresentation字符串.
Objective-c类别或简单框架将是一个很大的帮助 - 我可能会在时间上做到这一点.
更新3:如果您使用的是iOS 5或更高版本,现在有一个函数ABPerson可以返回给定人员记录的vCard表示:
CFDataRef ABPersonCreateVCardRepresentationWithPeople(CFArrayRef people);
Run Code Online (Sandbox Code Playgroud)
更新2:我急于完成一个应用程序,但因为我确实想要创建vCard数据并将其作为附件添加到几个地方的应用程序内邮件中,我现在已经创建了一个单独的类控制器来创建/隐藏vCard语法的详细信息.然后我只有一个方法返回一个vCard字符串的NSData版本,作为附件直接添加到邮件消息.这是一个更清洁的解决方案,您不需要创建任何文件,即使它们只是临时的.另外,你真的不需要数据的NSString表示,除非你确实想创建一个文件并多次使用它来保存重新制作数据?
我的控制器类有许多-setXXXX方法可以将值添加到字典中,其中键是带有vCard字段名称的字符串,如FN,TEL和ADR.然后,当我调用它时-vCardRepresentation,它现在返回一个NSData对象(通过扫描字典构建),可以直接在MFMailComposeViewController的-addAttachmentData:mimeType:fileName:方法中使用.
如果我可以整理我的代码,那么它足够通用,我会稍后发布.
更新:这是我的代码,它可能有助于某人开始:
- (NSString *)vCardRepresentation
{
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
[mutableArray addObject:@"BEGIN:VCARD"];
[mutableArray addObject:@"VERSION:3.0"];
[mutableArray addObject:[NSString stringWithFormat:@"FN:%@", self.name]];
[mutableArray addObject:[NSString stringWithFormat:@"ADR:;;%@",
[self addressWithSeparator:@";"]]];
if (self.phone != nil)
[mutableArray addObject:[NSString stringWithFormat:@"TEL:%@", self.phone]];
[mutableArray addObject:[NSString stringWithFormat:@"GEO:%g;%g",
self.latitudeValue, self.longitudeValue]];
[mutableArray addObject:[NSString stringWithFormat:@"URL:http://%@",
self.website]];
[mutableArray addObject:@"END:VCARD"];
NSString *string = [mutableArray componentsJoinedByString:@"\n"];
[mutableArray release];
return string;
}
Run Code Online (Sandbox Code Playgroud)
显然我正在引用我的类中的属性,以及一个调用-addressWithSeparator地址数据的方法,该方法必须包含; 甚至是可选地址字段的分隔符.
| 归档时间: |
|
| 查看次数: |
12317 次 |
| 最近记录: |