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

发布于 2024-12-27 23:16:00 字数 1372 浏览 3 评论 0原文

如何在 MonoTouch 中将 ABPerson 添加到 ABGroups

我在异常触发后使用 ABGroup.Add()

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

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


ABAddressBook adBook = new ABAddressBook();

//ABPeoplePickerNavigationController SelectPerson 事件 void HandleAbPeoplePickerSelectPerson(对象发送者,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;
    }
}

}

公共无效CreateGroup(字符串strGroupName) {

ABGroup grp = new ABGroup (); grp.Name = strGroupName; adBook.Add(grp); adBook.Save ();

}

谢谢

Ramesh K

How can I add ABPerson to ABGroups in MonoTouch?

i use ABGroup.Add() following exception fires

Unhandled Exception: System.ArgumentException: cfErrorHandle must not be null.
Parameter name: cfErrorHandle

I select already exist ABPerson using ABPeoplePickerNavigationController.


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 ();

}

Thanks

Ramesh K

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黯然 2025-01-03 23:16:00

地址簿可能很奇特。例如,仅当 ABPersonABAddressBook 的一部分(即添加它)时,将 ABPerson 添加到 ABGroup 才有效。对于一个群体来说,不会自动做到这一点)。

这段代码基本上与您使用额外一行所做的一样,将起作用。

        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);

The address book can be peculiar. E.g. Adding a ABPerson to a ABGroup is valid ony if the ABPerson is part of the ABAddressBook (i.e. adding it to a group does not, automagically, does that).

This code, basically what you're doing with one extra line, will work.

        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 (); 

but if you remove the line adding the ABPerson to the ABAddressBook you'll get the same error that you already experience.

        adBook.Add (p);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文