private static KeyValuePair <string, string>[] ToContactPhoneNumbers(NSArray <CNLabeledValue <CNPhoneNumber> > phoneNumbers) { var result = new List <KeyValuePair <string, string> >(); if (phoneNumbers == null || phoneNumbers.Count < 1) { return(result.ToArray()); } foreach (var labeledValue in phoneNumbers.ToArray(ptr => new CNLabeledValue <CNPhoneNumber>(ptr))) { if (labeledValue == null) { Debug.Log("Detected a null [CNLabeledValue<CNPhoneNumber>]."); continue; } Func <IntPtr, CNPhoneNumber> valueConstructor = ptr => new CNPhoneNumber(ptr); CNPhoneNumber number = labeledValue.GetValue(valueConstructor); NSString label = labeledValue.Label; if (label == null || number == null) { Debug.LogFormat("Detected null value in [CNLabeledValue<CNPhoneNumber>] -> [{0}, {1}].", label != null ? label.UTF8String : "null", number != null ? number.StringValue.UTF8String : "null"); continue; } result.Add(new KeyValuePair <string, string>(label.UTF8String, number.StringValue.UTF8String)); } return(result.ToArray()); }
private static NSArray <CNLabeledValue <CNPhoneNumber> > ToCNContactPhoneNumbers(KeyValuePair <string, string>[] phoneNumbers) { if (phoneNumbers == null) { return(null); } var result = new NSMutableArray <CNLabeledValue <CNPhoneNumber> >(); foreach (var phoneNumber in phoneNumbers) { NSString label = NSString.StringWithUTF8String(phoneNumber.Key); CNPhoneNumber number = CNPhoneNumber.PhoneNumberWithStringValue(phoneNumber.Value); result.AddObject(CNLabeledValue <CNPhoneNumber> .LabeledValueWithLabel(label, number)); } return(result); }