代码之家  ›  专栏  ›  技术社区  ›  Intoxicated Penguin

方法提前返回,未完成

  •  1
  • Intoxicated Penguin  · 技术社区  · 7 年前

    这种方法永远不会通过foreach循环。不管我在后面放什么,它都不会跑。即使book对象中没有contact对象,也不应该跳过其余的代码。这是我正在开发的应用程序中的一个联系人选择器,你知道这是怎么回事吗?谢谢

    public class UserContactService : IUserContactService
    {
        public List<Contact> GetContacts()
        {
            List<Contact> contacts = new List<Contact>();
            var book = new Xamarin.Contacts.AddressBook();
            Console.WriteLine("Before loop");
            foreach (Contact c in book)
            {
                contacts.Add(c);
            }
            Console.WriteLine(DateTime.Now);
            return contacts;
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Christopher Thrower    7 年前

    使用Xamarin,您需要首先检查用户是否已授予访问联系人簿的权限,否则您的foreach将出错(因为联系人簿永远不会包含联系人)。

    if (!await book.RequestPermission()) {
        Console.WriteLine("Permission denied by user or manifest");
        return;
    }
    

    我还将把您的foreach封装在try/catch中,以获取更多错误消息等:

    try {      
        foreach (Contact c in book)
        {
            contacts.Add(c);
        }
    } catch (Exception ex) {
        Console.WriteLine(ex);
    }
    

    有关Xmarin Mobile的更多信息,请点击此处: https://components.xamarin.com/view/xamarin.mobile