これはおおよそあなたが探しているものだと思います:
NSString *contactName = nil; // name of person in vcard
NSData *vcfData = nil; // vcard data
NSURL *fileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.vcf", contactName]]];
NSError *writeError;
if ([vcfData writeToURL:fileURL options:NSDataWritingAtomic error:&writeError]) {
NSArray *activityItems = @[fileURL];
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController:avc animated:YES completion:nil];
} else {
// failed, handle errors
}
いくつかのアクティビティへの NSData の提供を引き続きサポートしたい場合は、UIActivityItemSourceプロトコルに準拠するいくつかのオブジェクトを作成し、それらのいくつかが適切な場合に nil を返すようにする必要があります (詳細については、このSOを参照してください)。Apple のAirDrop サンプル コードプロジェクトも役立つかもしれません。