我是Swift 3语言的新手,我想从手机中获取数组中的联系人,然后存储在sqliteDB中。请帮忙。使用Swift 3从手机和商店获取联系人到sqliteDB
我看到了一个Swift 2.1的老教程,但所有这些方法都被弃用,我尝试了很多CNContacts
,但这对我没有帮助。
我也试过堆栈溢出的这种联系,但没有得到任何帮助:
Fetching all contacts in ios Swift?
我是Swift 3语言的新手,我想从手机中获取数组中的联系人,然后存储在sqliteDB中。请帮忙。使用Swift 3从手机和商店获取联系人到sqliteDB
我看到了一个Swift 2.1的老教程,但所有这些方法都被弃用,我尝试了很多CNContacts
,但这对我没有帮助。
我也试过堆栈溢出的这种联系,但没有得到任何帮助:
Fetching all contacts in ios Swift?
我刚刚工作的一个类似的问题,所以我会给你我的代码。我从几个不同的线索中找到它(包括this)。我们的要求是,刚刚从所有联系人获得单独的电话号码,并把它变成一个String数组,但你可以很容易地修改此做多:
func getContacts(){
contactStore.requestAccess(for: .contacts, completionHandler: {
granted, error in
var contacts: [CNContact] = {
let contactStore = CNContactStore()
//Change keys here to retreive more than just the phone number of the contact
let keysToFetch = [CNContactPhoneNumbersKey]
// Get all the containers
var allContainers: [CNContainer] = []
do {
allContainers = try contactStore.containers(matching: nil)
} catch {
print("Error fetching containers")
}
var results: [CNContact] = []
// Iterate all containers and append their contacts to our results array
for container in allContainers {
let fetchPredicate = CNContact.predicateForContactsInContainer(withIdentifier: container.identifier)
do {
let containerResults = try contactStore.unifiedContacts(matching: fetchPredicate, keysToFetch: keysToFetch as [CNKeyDescriptor])
results.append(contentsOf: containerResults)
for phone in results{
for labeledValue in phone.phoneNumbers{
self.phoneNumbersArray.append(labeledValue.value.stringValue)
}
}
} catch {
print("Error fetching results for container")
}
}
return results
}()
self.getFriendsFromPhoneNumbers()
})
}
此经过的所有容器和返回CNObjects数组(只有里面的电话号码,但你可以通过更改键来获得更多),然后遍历数组中的每个联系人和标签,只将电话号码作为字符串插入到电话号码数组中。
它适合我。但我应该写什么来获取firstName和familyName? –
你必须使用更多的键,如:[CNContactGivenNameKey,CNContactFamilyNameKey] –
我已经改变了密钥,但我必须写在这个for循环 ///////////////// ////// for phonesValue phone.phoneNumbers { print(labeledValue.value.stringValue) } –
你能告诉我们你在那之前已经尝试过了吗? – Randy
对不起,我撤销了我的代码,因为它没有工作。 –
你真的想把你的联系人存储在sqlite数据库吗?你有一些很好的选择。我通常使用[Realm](https://realm.io/),但也可以使用[CoreData](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/index。 html?utm_source = iosstash.io) 并取得联系人,请检查[这个答案](http://stackoverflow.com/a/34095632/3844377) – Randy