2013-01-16 2 views
0

나는 아이폰 연락처에 25000 개의 연락처를 삽입 할 필요가있다. 시뮬레이터에서 잘 작동하고 몇 분 안에 완성 될 수있다. 그러나 iPhone 4에서 가져올 때 3 시간 이상 소요되며 부분 연락처 만 저장되고 앱이 닫힙니다. 여기 ABAddressbook에 여러 연락처를 삽입하는 방법은 무엇입니까?

의 코드 내 조각 여러 레코드가 주소록에 삽입하는 간단한 방법

도움말 나 ... 사전에

for (int i = 0; i < [contactNameArray count]; i++) { 
    //Create new person and save to this group 
    ABRecordRef record = ABPersonCreate(); 
    BOOL isSuccess ; 
    NSString *firstname = [NSString stringWithFormat:@"%@",[contactNameArray objectAtIndex:i]]; 
    isSuccess = ABRecordSetValue(record, kABPersonFirstNameProperty,(__bridge CFStringRef)firstname, &error); 
    isSuccess = ABRecordSetValue(record, kABPersonLastNameProperty,CFSTR("Custom Contacts"), &error); 

    ABMutableMultiValueRef copyOfPhones = ABMultiValueCreateMutable(kABPersonPhoneProperty); 
    NSString *phonenumber = [NSString stringWithFormat:@"%@",[contactPhoneArray objectAtIndex:i]]; 
    CFTypeRef phone= (__bridge CFStringRef)phonenumber; 
    ABMultiValueAddValueAndLabel(copyOfPhones, phone,kABPersonPhoneMobileLabel,NULL); 
    isSuccess = ABRecordSetValue(record, kABPersonPhoneProperty, copyOfPhones, &error); 
    CFRelease(copyOfPhones); 

    ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    NSString *emailid = [NSString stringWithFormat:@"%@",[contactEmailArray objectAtIndex:i]]; 
    CFTypeRef email= (__bridge CFStringRef)emailid; 
    ABMultiValueAddValueAndLabel(multiEmail, email, kABWorkLabel, NULL); 
    ABRecordSetValue(record, kABPersonEmailProperty, multiEmail, &error); 
    CFRelease(multiEmail); 

    isSuccess = ABAddressBookAddRecord(ab, record, &error); 
    isSuccess = ABAddressBookSave(ab, &error); 

    ABGroupAddMember(group, record, &error); 

    NSLog(@"is success %d", isSuccess); 

    ABAddressBookSave(ab, &error); 
} 

감사합니다 ....

+0

시뮬레이터에는 Mac의 모든 기능과 메모리가 있지만 아이폰에는 없다는 것을 잊지 마십시오. – tomasmcguinness

+0

예 알아요.하지만 iOS 기기에 빠른 방법으로 삽입 할 수있는 방법이 필요합니다 .... – Arvind

답변

1

먼저 빠른 열거 형을 사용하십시오.

그런 다음 일괄 처리로 연락처를 저장하고 일괄 처리 끝에 카운터 수를 userdefaults 또는 다른 위치에 저장합니다. 이렇게하면 대처 프로세스를 다시 시작할 수 없습니다.

+0

당신의 생각을 바탕으로 훌륭한 작업 ... 나는 그걸로 잘합니다. – Arvind

관련 문제