public static string GetNameMatchingLocalizedLabel(this CNContactProperty property) { var label = property?.Label; if (!string.IsNullOrEmpty(label)) { var nativelabel = new NSString(label); switch (property.Label) { case "emailAddresses": return(CNLabeledValue <NSString> .LocalizeLabel(nativelabel)); case "phoneNumbers": return(CNLabeledValue <NSString> .LocalizeLabel(nativelabel)); case "postalAddresses": return(CNLabeledValue <NSString> .LocalizeLabel(nativelabel)); } } return(null); }
void HandleCNContactStoreListContactsHandler(CNContact contact, ref bool stop) { if (stop == false) { try { ContactItem item = new ContactItem(); item.ContactID = contact.Identifier ?? ""; //Birthday if (contact.Birthday != null) { var month = contact.Birthday.Month.ToString(); var day = contact.Birthday.Day.ToString(); var year = contact.Birthday.Year.ToString(); item.Birthday = day + "/" + month + "/" + year; } if (contact.GivenName.Length > 0 || contact.FamilyName.Length > 0) { //Displayname item.DisplayName = contact.GivenName + " " + contact.FamilyName; } else { item.DisplayName = ""; } //Name Name name = new Name(); name.FirstName = contact.GivenName; name.LastName = contact.FamilyName; name.Prefix = contact.NamePrefix; name.Suffix = contact.NameSuffix; name.MiddleName = contact.MiddleName; item.GetNames = name; Console.WriteLine(contact.FamilyName ?? ""); //Phone List <Phone> phoneslist = new List <Phone>(); foreach (var number in contact.PhoneNumbers) { string phonenumber = number.Value.ValueForKey(new NSString("digits")).ToString() ?? ""; string phonenumberType = CNLabeledValue <NSString> .LocalizeLabel(new NSString(number.Label ?? "")) ?? ""; Phone phone = new Phone { Type = phonenumberType, PhoneNumber = phonenumber }; phoneslist.Add(phone); Console.WriteLine(phonenumber); } item.GetPhones = phoneslist; //Email List <Email> emailslist = new List <Email>(); foreach (var obj in contact.EmailAddresses) { var type = Regex.Replace(obj.Label, @"[^0-9a-zA-Z]+", "") ?? ""; var email = Regex.Replace(obj.Value, @"[^0-9a-zA-Z@]+", "") ?? ""; Email email1 = new Email(); email1.Emailid = email; email1.Type = type; emailslist.Add(email1); } item.GetEmails = emailslist; //Address List <Address> addresseslist = new List <Address>(); foreach (var obj in contact.PostalAddresses) { Address address = new Address(); var type = Regex.Replace(obj.Label, @"[^0-9a-zA-Z]+", "") ?? ""; var street = obj.Value.Street; var city = obj.Value.City; var state = obj.Value.State; var postalcode = obj.Value.PostalCode; var country = obj.Value.Country; address.Type = type; address.FullAddress = street + "," + city + "," + "," + state + "," + postalcode + "," + country; addresseslist.Add(address); } item.GetAddress = addresseslist; //Company Company company = new Company { CompanyName = contact.OrganizationName ?? "", Role = contact.JobTitle }; item.GetCompany = company; //Url List <Url> url = new List <Url>(); foreach (var obj in contact.UrlAddresses) { Url url1 = new Url(); url1.URL = Regex.Replace(obj.Value, @"[^0-9a-zA-Z@]+", "") ?? ""; url.Add(url1); } item.GetUrls = url; //Date List <DateList> dateLists = new List <DateList>(); foreach (var obj in contact.Dates) { var type = Regex.Replace(obj.Label, @"[^0-9a-zA-Z]+", "") ?? ""; var datestring = obj.Value; DateList list = new DateList(); var month = contact.Birthday.Month.ToString() ?? ""; var day = contact.Birthday.Day.ToString() ?? ""; var year = contact.Birthday.Year.ToString() ?? ""; list.Date = day + "/" + month + "/" + year; list.type = type; dateLists.Add(list); } item.GetDateList = dateLists; totalContactListWithoutGrouping.Add(item); try { if (item.DisplayName != null && !string.IsNullOrEmpty(item.DisplayName)) { var firstLetter = item.DisplayName.Substring(0, 1).ToUpper(); var indexs = Array.IndexOf(alphate, firstLetter); totalContactList[indexs].Add(item); } else { totalContactList[26].Add(item); } //var vcvc = from s in totalContactList where s.Count > 0 select s.ToList(); } catch (Exception ex) { Console.WriteLine(ex); } } catch (Exception ex) { Console.WriteLine(ex); } } else { Console.WriteLine(stop); } }