如何在ABAddressBook MonoTouch中获取重复的电话号码

时间:2013-02-05 16:05:17

标签: iphone ios xamarin.ios abaddressbook

我正致力于获取具有相同电话号码的重复联系人的应用程序。 我的问题是常规的foreach很慢,接触量很大,我也知道使用谓词可以做到这一点。但我找不到任何带单音的样品。

2 个答案:

答案 0 :(得分:0)

我不知道ABAddressBook,但如果您使用Xamarin Mobile APi,那么您可以使用谓词,如下所示:

var abook = new AddressBook();
abook.RequestPermissions().ContinueWith (t =>
{
    if (!t.Result)
        return; // Permission denied

    var builder = new StringBuilder();

    // Full LINQ support
    foreach (Contact c in abook.Where (c => c.FirstName == "Eric" && c.Phones.Any()))
    {
        builder.AppendLine (c.DisplayName);
        foreach (Phone p in c.Phones)
            builder.AppendLine (String.Format ("{0}: {1}", p.Label, p.Number));

        builder.AppendLine();
    }

    contacts.Text = builder.ToString(); // Update UI

}, TaskScheduler.FromCurrentSynchronizationContext()); // Ensure we're on the UI Thread

来自http://betaapi.xamarin.com/?link=T%3aXamarin.Contacts.AddressBook

答案 1 :(得分:0)

你可以在O(N)时间内完成。这个答案使用一个循环来识别数组中的重复项:https://stackoverflow.com/a/12948182/1441667。尝试将Stuarts的答案与这种方法结合起来。