首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用CNContacts快速获取移动号码?

如何使用CNContacts快速获取移动号码?
EN

Stack Overflow用户
提问于 2016-05-04 22:26:29
回答 3查看 4.9K关注 0票数 6

我有一些代码可以检索用户联系人中的所有电话号码,但是我只想过滤掉移动号码。目前,我只是将第一个数字"+“或第二个数字"7”添加到数组中,如下所示:

代码语言:javascript
运行
复制
    func findContacts () -> [CNContact]{
    let keysToFetch = [CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),CNContactPhoneNumbersKey]
    let fetchRequest: CNContactFetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch)
    var contacts = [CNContact]()
    CNContact.localizedStringForKey(CNLabelPhoneNumberiPhone)
    fetchRequest.mutableObjects = false
    fetchRequest.unifyResults = true
    fetchRequest.sortOrder = .UserDefault

    let contactStoreID = CNContactStore().defaultContainerIdentifier()

    do {

        try CNContactStore( ).enumerateContactsWithFetchRequest(fetchRequest) { (let contact, let stop) -> Void in
            if contact.phoneNumbers.count > 0 {
                contacts.append(contact)
            }
            if (contact.isKeyAvailable(CNContactPhoneNumbersKey)) {
                for phoneNumber:CNLabeledValue in contact.phoneNumbers {
                    let number = phoneNumber.value as! CNPhoneNumber
                    print(number.stringValue)
                    let index = number.stringValue.startIndex.advancedBy(1)
                    let indexPlus = number.stringValue.startIndex.advancedBy(0)
                    if number.stringValue[index] == Character(String(7)) || number.stringValue[indexPlus] == Character("+"){
                        self.allNumbers.append("\(number.stringValue)")
                    }
                }
            }
        }

由于联系人存储在带有“移动”标签的iPhone上,我想知道是否只能将这些数字添加到数组中。谢谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-04 22:31:49

检查号码的标签是否像这样移动:

代码语言:javascript
运行
复制
var mobiles = [CNPhoneNumber]()

for num in contact.phoneNumbers {
    let numVal = num.value as! CNPhoneNumber
    if num.label == CNLabelPhoneNumberMobile {
        mobiles.append(numVal)
    }
}

然后你有一系列的手机号码给那个人。

票数 7
EN

Stack Overflow用户

发布于 2017-02-14 03:03:11

这篇文章中提到了一种更好的方法,您可以在这里使用flatMapcontainsSwift nested filter optimization?

票数 0
EN

Stack Overflow用户

发布于 2017-02-23 04:40:27

更多访问者的另一种方法:

代码语言:javascript
运行
复制
for con in contacts
 {
    for num in con.phoneNumbers
      {
         if num.label == "_$!<Mobile>!$_"
             {
                self.contactNames.append(con.givenName)
                self.contactNums.append(num.value.stringValue)
                    break
                       }
         else
            {
                   continue
            }
         }

  }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37039103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档