2016-03-31 26 views
1

Sadece iOS9 + 'yu destekleyen yeni bir iOS uygulaması uyguluyorum. Böylece, cihazda kayıtlı kişiler için telefon numaralarına erişmek için yeni kişiler çerçevesini kullanıyoruz.iOS9 İletişim Çerçeve eksik telefon numarası etiketleri?

CNPhoneNumber, farklı telefon numaraları etiketlerini tanımlar, ancak gerçek iOS kişileri ekranından çok daha küçük bir tür listesi içerir. Örneğin iPhone'umda bir kişiye "Çalışma" türü dışında bir sayı ekleyebiliyorum ancak SDK'da karşılık gelen CNLabelPhoneNumberWork etiketi yok. Yanlış yere mi bakıyorum yoksa bu sadece böyle mi? Kişiler, Apple'ın "$ !! $" dizesini uygulamamın dışında kodlamadığım sürece bir dizi numaraya sahip olabilir.

Bildiğim kadarıyla CNPhoneNumber söyleyebilirim sadece bu etiketleri sağlamaktadır:

@available(iOS 9.0, *) 
public let CNLabelPhoneNumberiPhone: String 
@available(iOS 9.0, *) 
public let CNLabelPhoneNumberMobile: String 
@available(iOS 9.0, *) 
public let CNLabelPhoneNumberMain: String 
@available(iOS 9.0, *) 
public let CNLabelPhoneNumberHomeFax: String 
@available(iOS 9.0, *) 
public let CNLabelPhoneNumberWorkFax: String 
@available(iOS 9.0, *) 
public let CNLabelPhoneNumberOtherFax: String 
@available(iOS 9.0, *) 
public let CNLabelPhoneNumberPager: String 

Gidip Kişilerime mevcut türlerinin listesini numaraları eklemek çok daha uzundur.

cevap

2

Bunlar, telefon numarası etiketleri için önceden tanımlanmış olanların olması gerektiği konusunda haklısınız.

Fakat Apple'ın doc açıklandığı gibi,: Telefon Numarası

Bu sabitler bir CNLabeledValue nesne CNPhoneNumber değeri olan kullanılabilen önceden tanımlanmış etiketlerdir Etiketler. Hala CNLabeledValuelabel tesise NSString* (not değilenum) alacağı ve Rehber görünen her ne içerecektir

. Bu yüzden hazır olun, "Özel Etiketler" seçeneği tarafından oluşturulmuş garip giriş kullanıcısı da alabilirsiniz. $ !! $ "Ben Apple'ın hardcode sürece İletişim Ben tanımlamak alamıyorum numaraları bir demet olabilir 'sorusuna karşılık


' Uygulamama dize?"

cevap CNContact arasında NO

phoneNumbers olacaktır:

Bu özellik, bir etiket ve bir CNPhoneNumber değere sahiptir, her biri CNLabeledValue nesnelerinin bir dizidir.

o .label size 'Work' gibi bir şey verecekti olsa yineleme

ve .value istediğiniz gerçek sayısını verecekti.

DÜZENLEME:

İlginç Contacts Framework Reference yılında, CNLabeledValue Class "Jenerik Etiketler" sabitleri gibi görünen, hangi CNLabelHome ve CNLabelWork varmış gibi görünür.

+0

Benim sorunum, CNLabeledValue .label özelliğinin, aslında, eşlenmesi gereken bazı tanımlayıcılara benzeyen ipler vermesidir.Yani benim kodumda bu gibi: func mapData (sayı: CNLabeledValue?) { eğer valueObj = number? .value as? CNPhoneNumber { numberLabel.text = "\ (valueObj.stringValue)" } CNLabelPhoneNumberWorkFax numberTitleLabel.text = sayı? .label } numberTitleLabel _ $ gibi bir dize olmak biter! Mobil! $ _ –

+0

localizedStringForLabel (_ :) 'yöntemini deneyin? – zcui93

+1

Telefon dışı numara etiketleri ile doğru yoldasınız. Bu nedenle, CNLabelWork, 'İş' tipi telefon numarası için kullanılabilir. –