Как добавить существующий контакт в существующую группу - PullRequest
2 голосов
/ 19 января 2012

Как добавить ABPerson к ABGroups в MonoTouch?

я использую ABGroup.Add() после срабатывания исключения

Необработанное исключение: System.ArgumentException: cfErrorHandle не должнобыть нулевымИмя параметра: cfErrorHandle

Я выбираю уже существующее ABPerson, используя ABPeoplePickerNavigationController.


ABAddressBook adBook = new ABAddressBook();</p>

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

<pre><code>if(_isNew )
{

    CreateGroup (txtNewGroup .Text);

    AddPersontoGroup(txtNewGroup .Text, e.Person);


}

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

}

public void AddPersontoGroup (строка 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 ();

}

Спасибо

Рамеш К

1 Ответ

1 голос
/ 21 января 2012

Адресная книга может быть своеобразной.Например, добавление ABPerson к ABGroup допустимо только в том случае, если ABPerson является частью ABAddressBook (т.е. добавление его в группу не делает этого автоматически).

Этот кодв основном то, что вы делаете с одной дополнительной строкой , будет работать.

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