如何在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
答案 0 :(得分:1)
地址簿可能很奇怪。例如。如果ABPerson
是ABGroup
的一部分,则将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);