일부 재 작성 작업에서 sqlite 데이터베이스의 연락처를 업데이트하는 데 사용하는 응용 프로그램을 만들고 있습니다. 사용자가 로그인 할 때마다 사용자의 허가로 iPhone의 주소록에서 연락처를 가져 와서 주 스레드의 데이터베이스에 삽입하는 데 사용되었습니다.주소록 수정 날짜 Xcode에서
아이디 연락처가 로그인 시간을 초과하면 데이터베이스에 매번 아이폰 연락처를 삽입하고 싶지 않습니다. 또한 iPhone의 주소록이 수정되지 않아서 데이터베이스 삽입이 각각 일어나고있는 경우에도 좋은 접근 방법이 아닙니다. 로그. 내가 연락처
NSArray *thePeople = (__bridge NSArray *)ABAddressBookCopyArrayOfAllPeople(_addressBook);
NSMutableArray * _allPeoplesDictArr = [NSMutableArray array];
for (id person in thePeople)
{
ABMultiValueRef phones =(__bridge ABMultiValueRef)((__bridge NSString*)ABRecordCopyValue((__bridge ABRecordRef)(person), kABPersonPhoneProperty));
NSString* name = (__bridge NSString *)ABRecordCopyCompositeName((__bridge ABRecordRef)(person));
ABRecordRef record = (__bridge ABRecordRef)[thePeople objectAtIndex:loop];
if(ABRecordGetRecordType(record) == kABPersonType) // this check execute if it is person group
{
ABRecordID recordId = ABRecordGetRecordID(record); // get record id from address book record
recordIdString = [NSString stringWithFormat:@"%d",recordId]; // get record id string from record id
NSDate *modificationDate = (__bridge NSDate*) ABRecordCopyValue(record, kABPersonModificationDateProperty);
NSLog(@"modificationDate %@",modificationDate);
firstNameString = (__bridge NSString*)ABRecordCopyValue(record,kABPersonFirstNameProperty); // fetch contact first name from address book
lastNameString = (__bridge NSString*)ABRecordCopyValue(record,kABPersonLastNameProperty); // fetch contact last
NSLog(@"%@",firstNameString);
}
}
를 가져 오는하고 내가 로그 아웃하거나 응용 프로그램을 종료 할 때 배열이 변경 알 어떻게 수정 날짜를 얻고있다 및 배열에 관리 할 수 있습니다하지만 어떻게
이입니다.
또 다른 방법은 각 연락처 수정 날짜를 내 sqlite 데이터베이스에있는 삽입 또는 생성 날짜와 일치시킬 수 있지만 여전히 비교에는 시간이 걸릴 것입니다.
MD5CheckSum 또는 주소록을 확인하는 방법이 없기 때문에 모든 연락처 작성 날짜와 삽입 날짜를 전체적으로 비교할 필요가 없습니다. 그리고 Addressbook MD5CheckSum이 수정되어 삽입 또는 업데이트가 필요하지 않으면 다른 방법은 없습니다.