1

現在、この関数を使用してアドレス帳から vCard を生成しています。

ABAddressBookRef ab = ABAddressBookCreateWithOptions(NULL, nil);

NSString *firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *lastName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);

if (!lastName) lastName = @"";
if (!firstName) firstName = @"";

NSString *name = [NSString stringWithFormat:@"%@ %@",firstName, lastName];

CFArrayRef contact = ABAddressBookCopyPeopleWithName(ab, (__bridge CFStringRef)(name));    

CFDataRef vcard = (CFDataRef)ABPersonCreateVCardRepresentationWithPeople(contact);

これは問題なく機能しますが、vCard に画像を入れたくありません。イメージを取得せずに vCard を生成する方法はありますか?

4

1 に答える 1

0

文字列から写真の部分を削除するだけで、次のように回避策を作成しました。

- (NSString *)removeImageFromVCF:(NSString *)yourString {

NSScanner *theScanner;
NSString *text = nil;

theScanner = [NSScanner scannerWithString:yourString];

if ([yourString rangeOfString:@"X-SOCIALPROFILE"].location == NSNotFound) {

    while ([theScanner isAtEnd] == NO) {

        [theScanner scanUpToString:@"PHOTO" intoString:NULL] ;
        [theScanner scanUpToString:@"END:VCARD" intoString:&text] ;

        yourString = [yourString stringByReplacingOccurrencesOfString:
                      [NSString stringWithFormat:@"%@", text] withString:@""];
    }

}else{

    while ([theScanner isAtEnd] == NO) {

        [theScanner scanUpToString:@"PHOTO" intoString:NULL] ;
        [theScanner scanUpToString:@"X-SOCIALPROFILE" intoString:&text] ;

        [theScanner scanUpToString:@"END:VCARD" intoString:NULL];

        yourString = [yourString stringByReplacingOccurrencesOfString:
                      [NSString stringWithFormat:@"%@", text] withString:@""];


    }

}

return yourString;

}

うまくいけば、これは他の誰かを助けるでしょう。

于 2013-03-01T12:46:04.237 に答える