Criando um vCard no iPhone

Estou tentando criar uma representação vCard no iPhone. Eu criei uma representação de string para o vCard. Não sei como convertê-lo no formulário NSData para enviá-lo como anexo. Isto é o que eu tenho até agora:

        NSString *vCardString = [vCard getVCFString]; // returns string representation for vCard
        NSData *vCardData = [vCardString dataUsingEncoding:NSUTF8StringEncoding];
        [mailController addAttachmentData:vCardData mimeType:@"text/x-vcard" fileName:@"LocationInfo"];

Quando clico no anexo quando faço um email de teste, ele cria um novo contato / adiciona como contato existente. Isso está correto, já que o iPhone o reconhece como um contato? Acho que estava interessado em obter as informações de localização, mas isso não parecia aparecer no meu anexo. O código para criar minha representação VCF é:

vcfString = [[NSMutableString allocWithZone:[self zone]] initWithCapacity:kDefaultStringSize];
    [vcfString appendString:@"BEGIN:VCARD\n"];
    [vcfString appendString:@"VERSION:3.0\n"];
    if (s) {
        NSMutableString *aString = [[NSMutableString alloc] initWithFormat:@"%@;", s];
        [vcfString appendString:aString];
        [aString replaceOccurrencesOfString:@";" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [aString length])];
        street = [[NSString allocWithZone:[self zone]] initWithString:aString];
        [aString release];
    }
    if (c) {
        NSMutableString *aString = [[NSMutableString alloc] initWithFormat:@"%@;", c];
        [vcfString appendString:aString];
        [aString replaceOccurrencesOfString:@";" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [aString length])];
        city = [[NSString allocWithZone:[self zone]] initWithString:aString];
        [aString release];
    }
    if (st) {
        NSMutableString *aString = [[NSMutableString alloc] initWithFormat:@"%@;", st];
        [vcfString appendString:aString];
        [aString replaceOccurrencesOfString:@";" withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [aString length])];
        state = [[NSString allocWithZone:[self zone]] initWithString:aString];
        [aString release];
    }
    // TODO: look up semicolon for VCard representation
    if (z) {
        NSString *aString = [[NSString alloc] initWithFormat:@"%@\n", z];
        [vcfString appendString:aString];
        zip = [[NSString allocWithZone:[self zone]] initWithString:aString];
        [aString release];
    }
    [vcfString appendString:@"END:VCARD"];

questionAnswers(1)

yourAnswerToTheQuestion