如何将现有联系人添加到现有组

时间:2012-01-19 12:07:49

标签: c# ios xamarin.ios abaddressbook

如何在MonoTouch中将ABPerson添加到ABGroups

我在发生异常火灾后使用ABGroup.Add()

  

未处理的异常:System.ArgumentException:cfErrorHandle不能为null。   参数名称:cfErrorHandle

我选择使用ABPeoplePickerNavigationController已经存在ABPerson。


ABAddressBook adBook = new ABAddressBook();

//ABPeoplePickerNavigationController SelectPerson event void HandleAbPeoplePickerSelectPerson (object sender, ABPeoplePickerSelectPersonEventArgs e) {

if(_isNew )
{

    CreateGroup (txtNewGroup .Text);

    AddPersontoGroup(txtNewGroup .Text, e.Person);


}

if(!e.Continue )
    this.NavigationController .DismissModalViewControllerAnimated (true);

}

public void AddPersontoGroup(string strGroupName,ABPerson person ) { ABGroup[] allGroups = adBook.GetGroups();

for (int rowIndex=0; rowIndex<allGroups.Length ;rowIndex++)
{
    ABGroup abGroup=allGroups [rowIndex];

    if(abGroup.Name ==strGroupName)
    {
        abGroup.Add(person);
        adBook.Save ();
        break;
    }
}

}

public void CreateGroup(string strGroupName) {

ABGroup grp = new ABGroup (); grp.Name = strGroupName; adBook.Add(grp); adBook.Save ();
if(_isNew ) { CreateGroup (txtNewGroup .Text); AddPersontoGroup(txtNewGroup .Text, e.Person); } if(!e.Continue ) this.NavigationController .DismissModalViewControllerAnimated (true);

for (int rowIndex=0; rowIndex<allGroups.Length ;rowIndex++) { ABGroup abGroup=allGroups [rowIndex]; if(abGroup.Name ==strGroupName) { abGroup.Add(person); adBook.Save (); break; } }

由于

Ramesh K

1 个答案:

答案 0 :(得分:1)

地址簿可能很奇怪。例如。如果ABPersonABGroup的一部分,则将ABPerson添加到ABAddressBook是有效的(即,将其添加到组中则不会自动执行此操作)。< / p>

此代码,基本上是您使用一行额外行所做的工作。

        ABAddressBook adBook = new ABAddressBook ();
        ABGroup grp = new ABGroup ();
        grp.Name = "Test";
        adBook.Add (grp);
        adBook.Save (); 

        ABPerson p = new ABPerson ();
        adBook.Add (p);

        grp.Add (p);
        adBook.Save (); 

但如果您删除将ABPerson添加到ABAddressBook的行,则会出现您遇到的相同错误。

        adBook.Add (p);