gpt4 book ai didi

c# - Xamarin.Forms 中的 IOS 联系人邮政地址

转载 作者:行者123 更新时间:2023-11-29 05:21:36 26 4
gpt4 key购买 nike

我正在 Xamarin.Forms 项目中编写一个 C# 应用程序,该应用程序显示联系人姓名和街道地址。我无法从 CNContact 中提取地址并将联系人地址分配给字符串。

这将是显而易见的事情,但我被困住了!

    public List<Contact> GetContacts()
{
contactList = new List<Contact>();

var store = new Contacts.CNContactStore();

var ContainerId = new CNContactStore().DefaultContainerIdentifier;
var predicate = CNContact.GetPredicateForContactsInContainer(ContainerId);

var fetchKeys = new NSString[] { CNContactKey.Identifier, CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.Birthday, CNContactKey.PostalAddresses, CNContactKey.ImageData };

NSError error;

var IPhoneContacts = store.GetUnifiedContacts(predicate, fetchKeys, out error);

foreach(var c in IPhoneContacts)
{
var contact = new Contact();

contact.FirstName = c.GivenName;
contact.FamilyName = c.FamilyName;

if(c.PostalAddresses.Length !=0)
{
contact.StreetAddress = CNPostalAddressFormatter.GetStringFrom(c.PostalAddresses, CNPostalAddressFormatterStyle.MailingAddress);
};

contactList.Add(contact);
}

return contactList;
}

最佳答案

问题是 CNPostalAddressFormatter.GetStringFrom()方法需要一个 CNPostalAddress对象作为参数,但您要传递自 PostalAddresses 以来单个联系人的所有地址属性是 CNLabeledValue<ValueType> 的数组对象。

您应该做的是迭代所有地址,或者默认情况下只采用第一个地址。实际上取决于您想要实现的目标。

例如,这将得到第一个 CNPostalAddress :

contact.StreetAddress = CNPostalAddressFormatter.GetStringFrom(c.PostalAddresses[0].Value, CNPostalAddressFormatterStyle.MailingAddress);

此外,如果您想知道地址的标签(家庭、工作等),您可以这样获取:

c.PostalAddresses[0].Label

然后是实际的CNPostalAddress对象又是这样的:

c.PostalAddresses[0].Value

关于c# - Xamarin.Forms 中的 IOS 联系人邮政地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58634530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com