我正在使用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且数据库有+1858555555现在如何编写查询?
对正确方向的任何帮助表示赞赏。
提前致谢,