二维码扫名片

在扫码结果的方法里调用

[reader setCompletionWithBlock:^(NSString *resultAsString) {
        [beSelf dismissViewControllerAnimated:YES completion:^{
            
            if (![AppUtils isBlankString:resultAsString]) {
                _resultString = resultAsString;
//                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"扫描结果" message:resultAsString delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定",nil];
//                
//                alert.tag = 10;
//                [alert show];
                ScanResultViewController *resultVC = [[ScanResultViewController alloc]init];

                if ([resultAsString hasPrefix:@"BEGIN:VCARD"]) {//名片以这种开头的
                    NSMutableDictionary *vCardArr = [[NSMutableDictionary alloc]init];
                    NSString *a = [ResolveVcard vcardTurnToMutableArray:resultAsString];
                    vCardArr = [AppUtils jsonToArrayOrNSDictionary:a];
                    if ([vCardArr count]>0) {
                      finalArr = [[NSMutableArray alloc]initWithCapacity:0];
                        
                        for (NSInteger i = 0 ; i < vCardArr.allKeys.count ; i ++) {
                            NSString *key = vCardArr.allKeys[i];
                            if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:key]] isEqualToString:@""]) {
                                NSString *Astr = [ResolveVcard whatString: key :[vCardArr objectForKey:key]];
                                [finalArr addObject:Astr];
                            }
                        }
                        NSLog(@"fina %@",finalArr);
                        if (finalArr.count > 0) {
                            resultVC.resultType = TYPE_CARD;
                            resultVC.resultArr = finalArr;
                        }
                    }

                }else if([resultAsString rangeOfString:@"CARD:"].location != NSNotFound){
                   NSMutableDictionary* vCardArr = [[NSMutableDictionary  alloc] init];
                    NSString *a = [ResolveVcard mecardTurnToMutableArray:resultAsString];
                    vCardArr = [AppUtils jsonToArrayOrNSDictionary:a];
                    if ([vCardArr count]> 0 ) {
                       finalArr = [[NSMutableArray alloc] init];
                        for (NSInteger i = 0 ; i < vCardArr.allKeys.count ; i ++) {
                            NSString *key = vCardArr.allKeys[i];
                            if (![[NSString stringWithFormat:@"%@",[vCardArr objectForKey:key]] isEqualToString:@""]) {
                                NSString *Astr = [ResolveVcard whatString: key :[vCardArr objectForKey:key]];
                                [finalArr addObject:Astr];
                            }
                        }
                        if (finalArr.count > 0) {
                            resultVC.resultType = TYPE_CARD;
                            resultVC.resultArr = finalArr;
                        }
                        NSLog(@"退出后finalArr count==%d %@",[finalArr count],finalArr);
                }
               
                }else{//其他的都是网址生成的二维码
                    if ([resultAsString hasPrefix:@"http://"] ||[resultAsString hasPrefix:@"https://"] ||[resultAsString hasPrefix:@"HTTP://"] ||[resultAsString hasPrefix:@"HTTPS://"]) {
                        NSLog(@"%@",resultAsString);
                        resultVC.resultType = TYPE_HTTP;
                        resultVC.httpString = resultAsString;
                    }
                }
                
                _isDisMiss = YES;
                _isShouldShow = YES;
                [self.navigationController pushViewController:resultVC animated:YES];
        }
            
        }];
        
    }];
    
    [self presentViewController:reader animated:YES completion:NULL];
创建一个类
<pre name="code" class="objc">#import <Foundation/Foundation.h>

@interface ResolveVcard : NSObject
+ (NSString *) vcardTurnToMutableArray:(NSString *) cardString;
+ (NSString *) mecardTurnToMutableArray:(NSString *) cardString;
+ (NSString *) whatString:(NSString*) cardString :(NSString*)valueId;
@end

//
//  resolveVcard.m
//  XXXX
//
//  Created by Tony on 15/7/23.
//  Copyright (c) 2015年 Tony. All rights reserved.
//

#import "ResolveVcard.h"

@implementation ResolveVcard
+ (NSString *) whatString:(NSString*) cardString :(NSString*)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,nil];
    }if ([cardString isEqual:@"TEL"]) {
        resultStr = [resultStr stringByAppendingFormat:@"电话:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"EMAIL"]) {
        resultStr = [resultStr stringByAppendingFormat:@"邮箱:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"ADDRESS"]) {
        resultStr = [resultStr stringByAppendingFormat:@"地址:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"ORG"]) {
        resultStr = [resultStr stringByAppendingFormat:@"公司:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"URL"]) {
        resultStr = [resultStr stringByAppendingFormat:@"网址:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"TITLE"]) {
        resultStr = [resultStr stringByAppendingFormat:@"职位:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"BDAY"]) {
        resultStr = [resultStr stringByAppendingFormat:@"出生年月:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }if ([cardString isEqual:@"NOTE"]) {
        resultStr = [resultStr stringByAppendingFormat:@"备注:   "];
        resultStr = [resultStr stringByAppendingFormat:valueStr,nil];
    }
    NSLog(@"resultStr===%@===",resultStr);
    return resultStr;
}

//其他格式
+ (NSString *) 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:@"{"];
    
    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:@"\","];
        }
        
        //提取TEL电话
        if ([str hasPrefix:@"TEL:"]) {
            a = [a stringByAppendingString:@"\"TEL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TEL:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //职位
        if ([str hasPrefix:@"TITLE:"]) {
            a = [a stringByAppendingString:@"\"TITLE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TITLE:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //出生
        if ([str hasPrefix:@"BDAY:"]) {
            a = [a stringByAppendingString:@"\"BDAY\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"BDAY:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //提取EMAIL电邮
        
        if ([str hasPrefix:@"EMAIL:"]) {
            a = [a stringByAppendingString:@"\"EMAIL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"EMAIL:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        if ([str hasPrefix:@"EM:"]) {
            a = [a stringByAppendingString:@"\"EMAIL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"EM:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        
        //提取ADR地址
        if ([str hasPrefix:@"ADR:"]) {
            a = [a stringByAppendingString:@"\"ADDRESS\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ADR:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        
        //提取ORG公司
        if ([str hasPrefix:@"ORG:"]) {
            a = [a stringByAppendingString:@"\"ORG\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ORG:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        if ([str hasPrefix:@"COR:"]) {
            a = [a stringByAppendingString:@"\"ORG\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"COR:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        
        //提取URL网址
        if ([str hasPrefix:@"URL:"]) {
            a = [a stringByAppendingString:@"\"URL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"URL:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //备注
        if ([str hasPrefix:@"NOTE:"]) {
            a = [a stringByAppendingString:@"\"NOTE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"NOTE:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
    }
    a = [a stringByAppendingString:@"\"end数组结束end\":\""];
    a = [a stringByAppendingString:@""];
    a = [a stringByAppendingFormat:@"\"}"];
    NSLog(@"a==%@",a);
    return a;
}

//将标准vcard数据转可变数组
+ (NSString *) 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
    NSString *a = [NSString stringWithFormat:@"{"];
    for (NSString *str in cardArray) {
        NSLog(@"str in cardArray is==%@==",str);
        //提取NAME名字
        if ([str hasPrefix:@"FN:"]) {
            a = [a stringByAppendingString:@"\"NAME\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"N:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //提取TEL电话
        if ([str hasPrefix:@"TEL;"]) {
           NSString *s = [str substringFromIndex:(@"TEL;".length)];
            
            a = [a stringByAppendingString:@"\"TEL\":\""];
            a = [a stringByAppendingString:[s substringFromIndex:(@"CELL:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //提取EMAIL电邮
        if ([str hasPrefix:@"EMAIL:"]) {
            a = [a stringByAppendingString:@"\"EMAIL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"EMAIL:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        if ([str hasPrefix:@"TITLE:"]) {
            a = [a stringByAppendingString:@"\"TITLE\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"TITLE:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //提取地址
        if ([str hasPrefix:@"ADR:"]) {
            a = [a stringByAppendingString:@"\"ADDRESS\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ADR:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //提取EMAIL电邮
        if ([str hasPrefix:@"ORG:"]) {
            a = [a stringByAppendingString:@"\"ORG\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"ORG:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
        //提取EMAIL电邮
        if ([str hasPrefix:@"URL:"]) {
            a = [a stringByAppendingString:@"\"URL\":\""];
            a = [a stringByAppendingString:[str substringFromIndex:(@"URL:".length)]];
            a = [a stringByAppendingString:@"\","];
        }
    }
    a = [a stringByAppendingString:@"\"end数组结束end\":\""];
    a = [a stringByAppendingString:@""];
    a = [a stringByAppendingFormat:@"\"}"];
    NSLog(@"a==%@",a);
    return a;
}
@end
扫码结果展示以及新建联系人
//
//  ScanResultViewController.m
//  CheckIn
//
//  Created by Tony on 15/7/23.
//  Copyright (c) 2015年 zhiye. All rights reserved.
//

#import "ScanResultViewController.h"
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>
#import "UIImage+additions.h"
@interface ScanResultViewController ()<UIWebViewDelegate,UITableViewDelegate,UITableViewDataSource,UIActionSheetDelegate,ABNewPersonViewControllerDelegate>
{
    UIActivityIndicatorView *activityView;
}
@end

@implementation ScanResultViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    if (self.resultType == TYPE_HTTP) {
        [self showWebview];
    }else
        [self showCardView];
}
- (void)showCardView{
    self.navigationItem.title = @"详细资料";
    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, KWindowW, KWindowH - 64)];
    scrollView.backgroundColor = RGBCOLOR(243, 245, 247);
    [self.view addSubview:scrollView];
    UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(0, 30, KWindowW, _resultArr.count *50)];
    table.delegate = self;
    table.dataSource = self;
    table.bounces = NO;
    [scrollView addSubview:table];
    [AppUtils setExtraCellLineHidden:table];
    if ([table respondsToSelector:@selector(setSeparatorInset:)])
        
    {
        [table setSeparatorInset:UIEdgeInsetsZero];
    }
    
    if ([table respondsToSelector:@selector(setLayoutMargins:)])
        
    {
        [table setLayoutMargins:UIEdgeInsetsZero];
        
    }

    
    UIButton *saveBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    saveBtn.frame = CGRectMake(20, CGRectGetMaxY(table.frame) + 30, KWindowW - 40, 40);
    saveBtn.backgroundColor = MAINCOLOR;
    saveBtn.layer.cornerRadius = 5;
    saveBtn.layer.masksToBounds = YES;
    [saveBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    [saveBtn setTitle:@"保存" forState:UIControlStateNormal];
    [saveBtn addTarget:self action:@selector(saveContact) forControlEvents:UIControlEventTouchUpInside];
    [scrollView addSubview:saveBtn];
    
    scrollView.contentSize = CGSizeMake(KWindowW, CGRectGetHeight(table.frame) + 30 + 100);
    
}
- (void)showWebview{
    self.navigationItem.title = @"扫码网址";
    UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, KWindowW, KWindowH - 64)];
    webView.delegate = self;
    [self.view addSubview:webView];
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_httpString]]];
    activityView = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 32, 32)];
    activityView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
    activityView.center = CGPointMake(self.view.center.x, self.view.center.y - 64);
    [self.view addSubview:activityView];
}
- (void)saveContact{
    UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"扫码信息" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"新建联系人", nil];
    [actionSheet showInView:self.view];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0) {
        [self addContact];
    }
}
#pragma mark-
#pragma mark-UITableviewDelegate\UITabelViewDatasource
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{
        if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
            [cell setSeparatorInset:UIEdgeInsetsZero];
        }
        
        // Prevent the cell from inheriting the Table View's margin settings
        if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
            [cell setPreservesSuperviewLayoutMargins:NO];
        }
        
        // Explictly set your cell's layout margins
        if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
            [cell setLayoutMargins:UIEdgeInsetsZero];
        }
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return _resultArr.count;
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }
    cell.textLabel.text = [_resultArr objectAtIndex:indexPath.row];
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 50;
}
#pragma mark-
#pragma mark-UIWebviewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView{
    [activityView startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
    [activityView stopAnimating];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    [activityView stopAnimating];
}
#pragma mark-
#pragma mark-添加联系人
- (void)addContact{
    if ([_resultArr count] > 0) {
        
        ABNewPersonViewController *newPersonViewController = [[ABNewPersonViewController alloc] init];
//        newPersonViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"确定" style:UIBarButtonItemStylePlain target:self action:@selector(confimAddContact)];
        //创建一条联系人记录
        ABRecordRef tmpRecord = ABPersonCreate();
        
        CFErrorRef error;
        BOOL tmpSuccess = NO;
        
        for (int i = 0; i < [_resultArr count]; i++) {
            NSString *firstStr = [[_resultArr objectAtIndex:i] substringToIndex:(@"前部:   ".length)];
            NSString *SecondStr = [[_resultArr objectAtIndex:i] substringFromIndex:(@"前部:   ".length)];
            NSLog(@"firstStr:==%@==SecondStr===%@==",firstStr,SecondStr);
            if ([firstStr hasPrefix:@"姓名:   "]) {
                NSString *name = [NSString stringWithFormat:SecondStr,nil];
//                NSString *Xname = [NSString stringWithFormat:@""];
//                //如果有分割  如:X;XX
//                if ([name rangeOfString:@";"].location !=NSNotFound) {
//                    Xname = [name substringToIndex:([name rangeOfString:@";"].location)];
//                    name = [name substringFromIndex:([name rangeOfString:@";"].location+1)];
//                }
                //First name  名  --OK
                //注意转换类型
                CFStringRef tmpFirstName = (__bridge CFStringRef)([name substringFromIndex:1]);
                tmpSuccess = ABRecordSetValue(tmpRecord, kABPersonFirstNameProperty, tmpFirstName, &error);

                //Last name  姓  --OK
                CFStringRef tmpLastName = (__bridge CFStringRef)([name substringToIndex:1]);
                tmpSuccess = ABRecordSetValue(tmpRecord, kABPersonLastNameProperty, tmpLastName, &error);
                //                CFRelease(tmpLastName);
            }
            if ([firstStr hasPrefix:@"电话:   "]) {
                CFStringRef tel = (__bridge CFStringRef)([NSString stringWithFormat:SecondStr,nil]);
                ABMutableMultiValueRef tmpMutableMultiPhones = ABMultiValueCreateMutable(kABMultiStringPropertyType);
                ABMultiValueAddValueAndLabel(tmpMutableMultiPhones, tel, kABPersonPhoneMobileLabel, NULL);
                tmpSuccess = ABRecordSetValue(tmpRecord, kABPersonPhoneProperty, tmpMutableMultiPhones, &error);
                //                CFRelease(tmpPhones);
            }
            if ([firstStr hasPrefix:@"邮箱:   "]) {
                CFStringRef mail = (__bridge CFStringRef)([NSString stringWithFormat:SecondStr,nil]);
                //email  邮件
                ABMutableMultiValueRef tmpMutableMultiEmails = ABMultiValueCreateMutable(kABMultiStringPropertyType);
                ABMultiValueAddValueAndLabel(tmpMutableMultiEmails, mail, kABWorkLabel, NULL);
                tmpSuccess = ABRecordSetValue(tmpRecord, kABPersonEmailProperty, tmpMutableMultiEmails, &error);
                //                CFRelease(tmpEmail);
            }
            if ([firstStr hasPrefix:@"公司:   "]) {
                NSString *org = [NSString stringWithFormat:SecondStr,nil];
                //公司  --OK
                CFStringRef tmpCompany = (__bridge CFStringRef)(org);
                tmpSuccess = ABRecordSetValue(tmpRecord, kABPersonOrganizationProperty, tmpCompany, &error);
                //                CFRelease(tmpCompany);
            }
            if ([firstStr hasPrefix:@"网址:   "]) {
                CFStringRef url = (__bridge CFStringRef)([NSString stringWithFormat:SecondStr,nil]);
                //网址
                ABMutableMultiValueRef tmpMutableMultiUrls = ABMultiValueCreateMutable(kABMultiStringPropertyType);
                ABMultiValueAddValueAndLabel(tmpMutableMultiUrls, url, kABWorkLabel, NULL);
                tmpSuccess = ABRecordSetValue(tmpRecord, kABPersonURLProperty, tmpMutableMultiUrls, &error);
                //                CFRelease(tmpUrl);
            }
            if ([firstStr hasPrefix:@"地址:   "]) {
                NSString *address = [NSString stringWithFormat:SecondStr,nil];
                //地址
                //;;xxx;;XX;400039
                NSString *strCity = [NSString stringWithFormat:@""];
                NSString *strState = [NSString stringWithFormat:@""];
                NSString *strZip = [NSString stringWithFormat:@""];
                NSString *strCountry = [NSString stringWithFormat:@""];
                NSString *strCountryCode = [NSString stringWithFormat:@""];
                if ([address rangeOfString:@";"].location != NSNotFound) {
                    NSArray *addarray = [address componentsSeparatedByString:@";"];
                    if ([addarray count] == 6) {
                        address = [NSString stringWithFormat:[addarray objectAtIndex:2],nil];
                        strCity = [NSString stringWithFormat:[addarray objectAtIndex:4],nil];
                        strState = [NSString stringWithFormat:[addarray objectAtIndex:3],nil];
                        strZip = [NSString stringWithFormat:[addarray objectAtIndex:5],nil];
                        strCountry = [NSString stringWithFormat:[addarray objectAtIndex:1],nil];
                        strCountryCode = [NSString stringWithFormat:[addarray objectAtIndex:0],nil];
                    }
                }
//                ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABDictionaryPropertyType);
//                
//                NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];
//                [addressDictionary setObject:address forKey:(__bridge NSString *) kABPersonAddressStreetKey];
//                [addressDictionary setObject:strCity forKey:(__bridge NSString *)kABPersonAddressCityKey];
//                [addressDictionary setObject:strState forKey:(__bridge NSString *)kABPersonAddressStateKey];
//                [addressDictionary setObject:strZip forKey:(__bridge NSString *)kABPersonAddressZIPKey];
//                [addressDictionary setObject:strCountry forKey:(__bridge NSString *)kABPersonAddressCountryKey];
//                [addressDictionary setObject:strCountryCode forKey:(__bridge NSString *)kABPersonAddressCountryCodeKey];
//                
//                ABMultiValueIdentifier identifier;
//                ABMultiValueAddValueAndLabel(multiAddress,(__bridge CFTypeRef)(addressDictionary), kABWorkLabel, &identifier);
//                tmpSuccess =ABRecordSetValue(tmpRecord, kABPersonAddressProperty, multiAddress, &error);
//                CFRelease(multiAddress);
//                CFRelease((CFTypeRef) addressDictionary);
            }
        }
        
        newPersonViewController.displayedPerson = tmpRecord;
        newPersonViewController.newPersonViewDelegate = self;
        
        [self.navigationController pushViewController:newPersonViewController animated:YES];
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:RGBCOLOR(255, 255, 255) size:CGSizeMake(KWindowW, 64)] forBarMetrics:UIBarMetricsDefault];
//        newPersonViewController.navigationItem.title = @"添加联系人";
        UILabel *t = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];
        t.textAlignment = NSTextAlignmentCenter;
        t.textColor = [UIColor blueColor];
        t.text  =@"添加联系人";
        newPersonViewController.navigationItem.titleView = t;
        [self.navigationController setNavigationBarHidden:NO animated:YES];  
    }
}
- (void) newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person
{
//    [self.navigationController setNavigationBarHidden:YES animated:YES];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:MAINCOLOR size:CGSizeMake(KWindowW, 64)] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

@end

转自http://blog.youkuaiyun.com/icash/article/details/7739159


标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值