.h文件:
//
// resolveVcard.h
// PPK365
//
// Created by IMAC on 13-4-2.
//
//
#import <Foundation/Foundation.h>
@interface resolveVcard : NSObject
+ (NSMutableArray *) dicToMutableArray:(NSMutableDictionary *) vCardArr;
+ (NSMutableDictionary *) vcardTurnToMutableArray:(NSString *) cardString;
+ (NSMutableDictionary *) mecardTurnToMutableArray:(NSString *) cardString;
+ (NSString *) whatString:(id) cardString:(id)valueId;
@end
.m文件:
//
// resolveVcard.m
// PPK365
//
// Created by IMAC on 13-4-2.
//
//
#import "resolveVcard.h"
@implementation resolveVcard
+ (NSString *) whatString:(id) cardString:(id)valueId
{
NSLog(@"valueId===%@===",valueId);
NSString *valueStr = [NSString stringWithFormat:@"%@",valueId];
NSLog(@"id===%@===",cardString);
NSString *resultStr = [NSString stringWithFormat:@""];
if ([cardString isEqual:@"NAME"]) {
resultStr = [resultStr stringByAppendingFormat:@"姓名: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}if ([cardString isEqual:@"TITLE"]) {
resultStr = [resultStr stringByAppendingFormat:@"职位: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}if ([cardString isEqual:@"TEL"]) {
resultStr = [resultStr stringByAppendingFormat:@"电话: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}
if ([cardString isEqual:@"M"]) {
resultStr = [resultStr stringByAppendingFormat:@"手机: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}
if ([cardString isEqual:@"FAX"]) {
resultStr = [resultStr stringByAppendingFormat:@"传真: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}if ([cardString isEqual:@"EMAIL"]) {
resultStr = [resultStr stringByAppendingFormat:@"邮箱: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}if ([cardString isEqual:@"ADDRESS"]) {
resultStr = [resultStr stringByAppendingFormat:@"地址: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}if ([cardString isEqual:@"ORG"]) {
resultStr = [resultStr stringByAppendingFormat:@"公司: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}if ([cardString isEqual:@"URL"]) {
resultStr = [resultStr stringByAppendingFormat:@"网址: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}
if ([cardString isEqual:@"BDAY"]) {
resultStr = [resultStr stringByAppendingFormat:@"生日: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}
if ([cardString isEqual:@"NOTE"]) {
resultStr = [resultStr stringByAppendingFormat:@"备注: "];
resultStr = [resultStr stringByAppendingFormat:valueStr];
}
NSLog(@"resultStr===%@===",resultStr);
return resultStr;
}
+ (NSMutableArray *) dicToMutableArray:(NSMutableDictionary *) vCardArr
{
NSMutableArray * finalArr = [[NSMutableArray alloc] init];
if ([vCardArr objectForKey:@"NAME"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"NAME"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"NAME":[vCardArr objectForKey:@"NAME"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"TITLE"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"TITLE"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"TITLE":[vCardArr objectForKey:@"TITLE"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"TEL"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"TEL"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"TEL":[vCardArr objectForKey:@"TEL"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"M"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"M"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"M":[vCardArr objectForKey:@"M"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"FAX"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"FAX"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"FAX":[vCardArr objectForKey:@"FAX"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"EMAIL"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"EMAIL"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"EMAIL":[vCardArr objectForKey:@"EMAIL"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"ADDRESS"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"ADDRESS"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"ADDRESS":[vCardArr objectForKey:@"ADDRESS"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"ORG"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"ORG"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"ORG":[vCardArr objectForKey:@"ORG"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"URL"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"URL"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"URL":[vCardArr objectForKey:@"URL"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"BDAY"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"BDAY"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"BDAY":[vCardArr objectForKey:@"BDAY"]];
[finalArr addObject:Astr];
}
}
if ([vCardArr objectForKey:@"NOTE"]!=nil) {
if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:@"NOTE"]] isEqualToString:@""]) {
NSString *Astr = [resolveVcard whatString:@"NOTE":[vCardArr objectForKey:@"NOTE"]];
[finalArr addObject:Astr];
}
}
return finalArr;
}
//其他格式
+ (NSMutableDictionary *) mecardTurnToMutableArray:(NSString *) cardString
{
/*
BEGIN CARD:N:李XX;COR:公司名;TIL:经理;TEL:13899;M:186000;EM:xx@xx.com;IM:QQ 1232;ADR:地址;URL:http://xxx.com;;
*/
/*
MECARD:N:aaaaa;TEL:234234;EMAIL:3434;ADR:rrrrrrrrrr;URL:http
*/
/*
CARD:N:李XX;COR:公司名;ADR:地址;ZIP:43000;TEL:0239999;M:186393939;EM:KK@KK.COM;URL:HTTP://BAIDU.COM;;
*/
NSArray *cardArray;
// 去除CARD:及之前的字符串
cardString = [cardString substringFromIndex:([cardString rangeOfString: @"CARD:"].location+@"CARD:".length)];
//没有找到更好的方法,所以还是使用死方法,定死数组字段名。如果以后找到更好的方法再更改
//预设定:NAME,TEL,EMAIL,ADDRESS,ORG,URL
cardArray = [cardString componentsSeparatedByString:@";"];
//a 是一种JSON格式。方便转目录或者数组
NSString *a = [NSString stringWithFormat:@"{"];
NSLog(@"%@",cardArray);
NSMutableDictionary *dicarray =[[NSMutableDictionary alloc] init];
for (int i=0;i<cardArray.count;i++) {
NSString *str =[cardArray objectAtIndex:i];
NSLog(@"str in cardArray is==%@==",str);
//提取NAME名字
if ([str hasPrefix:@"N:"]) {
a = [a stringByAppendingString:@"\"NAME\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"N:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"N:".length)] forKey:@"NAME"];
}
//提取TEL电话
if ([str hasPrefix:@"TEL:"]) {
a = [a stringByAppendingString:@"\"TEL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"TEL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"TEL:".length)] forKey:@"TEL"];
}
//提取M电话
if ([str hasPrefix:@"M:"]) {
a = [a stringByAppendingString:@"\"M\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"M:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"M:".length)] forKey:@"M"];
}
//提取BDAY生日
if ([str hasPrefix:@"BDAY:"]) {
a = [a stringByAppendingString:@"\"BDAY\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"BDAY:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"BDAY:".length)] forKey:@"BDAY"];
}
//提取FAX传真
if ([str hasPrefix:@"FAX:"]) {
a = [a stringByAppendingString:@"\"FAX\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"FAX:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"FAX:".length)] forKey:@"FAX"];
}
//提取EMAIL电邮
if ([str hasPrefix:@"EMAIL:"]) {
a = [a stringByAppendingString:@"\"EMAIL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"EMAIL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"EMAIL:".length)] forKey:@"EMAIL"];
}
if ([str hasPrefix:@"EM:"]) {
a = [a stringByAppendingString:@"\"EMAIL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"EM:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"EM:".length)] forKey:@"EMAIL"];
}
//提取ADR地址
if ([str hasPrefix:@"ADR:"]) {
a = [a stringByAppendingString:@"\"ADDRESS\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"ADR:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"ADR:".length)] forKey:@"ADDRESS"];
}
//提取ORG公司
if ([str hasPrefix:@"ORG:"]) {
a = [a stringByAppendingString:@"\"ORG\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"ORG:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"ORG:".length)] forKey:@"ORG"];
}
if ([str hasPrefix:@"COR:"]) {
a = [a stringByAppendingString:@"\"ORG\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"COR:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"COR:".length)] forKey:@"ORG"];
}
//提取URL网址
if ([str hasPrefix:@"URL:"]) {
a = [a stringByAppendingString:@"\"URL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"URL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"URL:".length)] forKey:@"URL"];
}
//提取TITLE
if ([str hasPrefix:@"TITLE:"]) {
a = [a stringByAppendingString:@"\"TITLE\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"TITLE:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"TITLE:".length)] forKey:@"TITLE"];
}
//提取TIL
if ([str hasPrefix:@"TIL:"]) {
a = [a stringByAppendingString:@"\"TITLE\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"TIL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"TIL:".length)] forKey:@"TITLE"];
}
//提取NOTE
if ([str hasPrefix:@"NOTE:"]) {
a = [a stringByAppendingString:@"\"NOTE\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"NOTE:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"NOTE:".length)] forKey:@"NOTE"];
}
}
a = [a stringByAppendingString:@"\"end数组结束end\":\""];
a = [a stringByAppendingString:@""];
a = [a stringByAppendingFormat:@"\"}"];
NSLog(@"a==%@",dicarray);
return dicarray;
// return a;
}
//将标准vcard数据转可变数组
+ (NSMutableDictionary *) vcardTurnToMutableArray:(NSString *) cardString
{
/*
//以下是一个标准的vcard格式
BEGIN:VCARD
VERSION:3.0
N:X;XX
TEL:1383838438
EMAIL:xx@xx.com
ADR:;;地址;;城市;邮编
ORG:公司
TITLE:
URL:网址
NOTE:QQ:998
END:VCARD
*/
NSArray *cardArray;
//判断是否是正规的vcard格式
if ([cardString hasPrefix:@"BEGIN:VCARD"]){
//去除掉头部
cardString = [cardString substringFromIndex:(@"BEGIN:VCARD\n".length)];
NSLog(@"取后的cardstring :===%@==",cardString);
//分割转换成数组
cardArray = [cardString componentsSeparatedByString:@"\n"];
NSLog(@"分割后的数组 :%@",cardArray);
}
//没有找到更好的方法,所以还是使用死方法,定死数组字段名。如果以后找到更好的方法再更改
//预设定:NAME,TEL,EMAIL,ADDRESS,ORG,URL
NSMutableDictionary *dicarray =[[NSMutableDictionary alloc] init];
NSString *a = [NSString stringWithFormat:@"{"];
for (NSString *str in cardArray) {
NSLog(@"str in cardArray is==%@==",str);
//提取NAME名字
if ([str hasPrefix:@"N:"]) {
a = [a stringByAppendingString:@"\"NAME\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"N:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"N:".length)] forKey:@"NAME"];
}
//提取TEL电话
if ([str hasPrefix:@"TEL:"]) {
a = [a stringByAppendingString:@"\"TEL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"TEL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"TEL:".length)] forKey:@"TEL"];
}
//提取M电话
if ([str hasPrefix:@"M:"]) {
a = [a stringByAppendingString:@"\"M\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"M:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"M:".length)] forKey:@"M"];
}
//提取BDAY生日
if ([str hasPrefix:@"BDAY:"]) {
a = [a stringByAppendingString:@"\"BDAY\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"BDAY:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"BDAY:".length)] forKey:@"BDAY"];
}
//提取FAX传真
if ([str hasPrefix:@"FAX:"]) {
a = [a stringByAppendingString:@"\"FAX\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"FAX:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"FAX:".length)] forKey:@"FAX"];
}
//提取EMAIL电邮
if ([str hasPrefix:@"EMAIL:"]) {
a = [a stringByAppendingString:@"\"EMAIL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"EMAIL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"EMAIL:".length)] forKey:@"EMAIL"];
}
//提取ADDRESS地址
if ([str hasPrefix:@"ADR:"]) {
a = [a stringByAppendingString:@"\"ADDRESS\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"ADR:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"ADR:".length)] forKey:@"ADDRESS"];
}
//提取ORG公司
if ([str hasPrefix:@"ORG:"]) {
a = [a stringByAppendingString:@"\"ORG\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"ORG:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"ORG:".length)] forKey:@"ORG"];
}
//提取URL网址
if ([str hasPrefix:@"URL:"]) {
a = [a stringByAppendingString:@"\"URL\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"URL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"URL:".length)] forKey:@"URL"];
}
//提取TITLE
if ([str hasPrefix:@"TITLE:"]) {
a = [a stringByAppendingString:@"\"TITLE\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"TITLE:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"TITLE:".length)] forKey:@"TITLE"];
}
//提取TIL
if ([str hasPrefix:@"TIL:"]) {
a = [a stringByAppendingString:@"\"TITLE\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"TIL:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"TIL:".length)] forKey:@"TITLE"];
}
//提取NOTE
if ([str hasPrefix:@"NOTE:"]) {
a = [a stringByAppendingString:@"\"NOTE\":\""];
a = [a stringByAppendingString:[str substringFromIndex:(@"NOTE:".length)]];
a = [a stringByAppendingString:@"\","];
[dicarray setObject:[str substringFromIndex:(@"NOTE:".length)] forKey:@"NOTE"];
}
}
a = [a stringByAppendingString:@"\"end数组结束end\":\""];
a = [a stringByAppendingString:@""];
a = [a stringByAppendingFormat:@"\"}"];
NSLog(@"a==%@",dicarray);
return dicarray;
}
@end