我想从iOS 9上的CNContact获取国家代码和电话号码.我尝试过很多东西,但找不到办法.我取得的最好成绩是打印:
<CNPhoneNumber: 0x7f886389a140: countryCode=us, digits=5555648583>
Run Code Online (Sandbox Code Playgroud)
我是这样做的:
func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {
print(contact.phoneNumbers.count)
for number: CNLabeledValue in contact.phoneNumbers {
print(number.value)
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是countryCode和数字的值.有任何想法如何在Swift中访问它们?谢谢!
我正在尝试在 2 个 iOS 设备之间打开一个 L2CAP 通道并双向传输数据。其中一个设备作为中心,另一个作为外围设备。
在外围方面:
我发布了一个这样的 L2CAPChannel:
func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
if peripheral.state == .poweredOn {
peripheral.publishL2CAPChannel(withEncryption: false)
}
}
Run Code Online (Sandbox Code Playgroud)
尝试了 true 和 false 进行加密。
然后,一旦频道发布,我就从 didPublishL2CAPChannel 委托方法中获取 PSM,并创建一个具有包含 PSM 作为其值的特征的服务,并开始对其进行广告宣传。
在中央一侧:
我扫描外围设备,找到合适的外围设备,连接到它,开始发现服务,然后一旦发现服务,我就会发现特征。我找到了特征,读取了它的值并获得了 PSM。然后我这样做:
self.peripheral.openL2CAPChannel(psm)
Run Code Online (Sandbox Code Playgroud)
然后我在通道打开的委托方法中得到一个回调并执行以下操作:
func peripheral(_ peripheral: CBPeripheral, didOpen channel: CBL2CAPChannel?, error: Error?) {
guard error == nil else {
print("Couldn't open channel. Error: \(error!.localizedDescription)")
return
}
self.l2capChannel = channel
self.l2capChannel?.inputStream.delegate = self
self.l2capChannel?.outputStream.delegate = self
print("L2CAP channel opened with \(peripheral.name ?? "unknown")")
} …Run Code Online (Sandbox Code Playgroud)