2012-04-30 5 views
0

다른 사람의 코드 작업. 정말이 코드에서 정확히 무슨 일이 일어나고 있는지 혼란 스럽습니다.사람 속성 설정

ABAddressBookRef addressBook = ABAddressBookCreate(); 
ABRecordRef persons = ABAddressBookGetPersonWithRecordID(addressBook, x); 
CFErrorRef *error=NULL; 
ABAddressBookRemoveRecord(addressBook, persons, error); 
ABAddressBookSave(addressBook, error); 

ABRecordRef persons = ABPersonCreate(); 

ABRecordSetValue(persons, kABPersonFirstNameProperty, firstName , nil); 

수행해야 할 작업은 ABRecordRef 사람을 만들어야한다는 것입니다. 그의 속성을 설정하고 기록/세부 정보를 표시해야합니다. 그는 결코 주소록에 저장되어서는 안됩니다. 이것을하는 방법일까요? 도움이 필요하다.

편집 : 속성을 person에게 설정하는 것 외에도,보기 컨트롤러를 밀어 사람을 볼 수 있도록 다음 코드가 추가되었습니다.

MyContactDetailViewcontroller *personContactDetail = [[MyContactDetailViewcontroller alloc] init]; 
personContactDetail.displayedPerson = persons; 
personContactDetail.passedSelectedContactData = selectedContactsOnlyData; 
[self.navigationController pushViewController:personContactDetail animated:YES]; 
[personContactDetail release]; 

MyContactDetailViewcontroller 서브 클래스 ABPersonViewController. 또는 ABUnknownPersonViewController을 사용하는 것이 더 쉽습니다.

당신이 연락처가 주소록에 중복 될 수있는 경우를

이 정확히 무슨 일이 여기에 무슨 일이 일어나고있다

답변

1

.. 내가 설명 할 것입니다 ..

ABAddressBookCreate을 찾을 수 있습니까하면 데이터에서 새 주소록을 생성 주소록 데이터베이스이므로 ABAddressBookRef에 대한 변경 사항은 ABAddressBookSave()으로 전화하면 실제 주소록 데이터베이스에만 저장됩니다. 그래서 그것이하는 것은 recordid-x을 가진 사람에 대한 참조를 얻는 것입니다. 당신은 당신이 그 값을 설정하는

ABRecordRef persons = ABPersonCreate(); 

과보다를 사용하여 새 사용자 항목을 만드는,하지만이

ABAddressBookSave() 바라고 ...이 특정 객체에 사용할 수 있고 당신이 필요하지 않은 경우 데이터베이스에 저장되지 않습니다보다 이 도움이됩니다 ... :)

+0

ABAddressBookSave()를 호출하면 사람이 실제로 주소록에 저장되고 해당 속성에 대한 변경 사항이 주소록에도 반영됩니다. 그래? –

+0

사람을 만든 후에 ABAddressBookSave()가 호출되지 않으므로 NO. ABAddressBookSave()를 YES보다 다시 호출하면 (그 시점까지 변경 한 사항 만). –

+0

'ABAddressBookSave (addressBook, error);'. 이 코드는 무엇을합니까? 재산이없는 사람을 구할 수 있습니까? –