我正在使用firebase和swift . 一旦用户使用FIRAuth登录,我就会获得并验证用户的电话号码,并填写国家/地区代码,例如:18585555555

我将用户名,logindate和phonenumber存储到firebase数据库,并将手机用作KEY . 这是格式:

"users" : {
    "+18585555555" : {
      "lastLoginDate" : "2016.07.15 21:39:26 GMT+3",
      "name" : "John",
      "phone" : "+18585555555"
    },
    "+18585555556" : {
      "lastLoginDate" : "2016.07.15 15:46:16 GMT+3",
      "name" : "Jane",
      "phone" : "+18585555556"
    },
    "+18585555557" : {
      "lastLoginDate" : "2016.07.15 16:13:46 GMT+3",
      "name" : "Richard",
      "phone" : "+18585555557"
    }
  }
}

我使用联系商店iOS9获取联系人,如下所示:

private func allContacts() -> [CNContact] {
    let contactStore = AppDelegate.getAppDelegate().contactStore
    let keysToFetch = [
        CNContactFormatter.descriptorForRequiredKeysForStyle(.FullName),
        CNContactPhoneNumbersKey,
        CNContactImageDataAvailableKey,
        CNContactThumbnailImageDataKey
    ]

    var allContainers: [CNContainer] = []
    do {
        allContainers = try contactStore.containersMatchingPredicate(nil)
    } catch {
        DLog("Error fetching containers")
    }

    var results: [CNContact] = []

    for container in allContainers {
        let fetchPredicate = CNContact.predicateForContactsInContainerWithIdentifier(container.identifier)

        do {
            let containerResults = try contactStore.unifiedContactsMatchingPredicate(fetchPredicate, keysToFetch: keysToFetch)
            results.appendContentsOf(containerResults)
        } catch {
            DLog("Error fetching results for container")
        }
    }

    return results
}

为简单起见,步骤1:假设电话联系人电话号码的存储方式与数据库格式完全相同 .

现在我想检查手机上的联系人是否存在于数据库中 . 如上所述,数据库可能存储数百万用户,电话号码是关键 .

我是否根据数据库查询手机中的每个号码?如果是这样,你能提供一个查询示例吗? Json数据库对我来说是新的,我甚至无法弄清楚如何逐个查询 .

对于第2步:存储在CNContact中的数字可能在开头有国家/地区代码,可能没有 . 国家代码可以是1或可以是任何东西 . 如果手机有8585555555且db有1858555555现在如何编写查询?

任何正确方向的帮助表示赞赏 .

提前致谢,