我正在創建一個應用程序,用於在某些重寫操作中更新來自sqlite數據庫的聯繫人。我以前每次用戶登錄時都會在用戶的許可下從iPhone的地址簿中獲取聯繫人,並將其插入到主線程的數據庫中。Xcode中的通訊錄修改日期
我不想在用戶登錄時將iphone聯繫人每次都插入數據庫,因爲它超過登錄時間,如果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或地址簿,而不是比較每個聯繫人的創建日期和插入日期。如果地址簿MD5CheckSum被修改,所以插入或更新需要發生其他不要。