Ich habe kleines Problem in laden Telefon Kontakte in View-Controller, ich erfolgreich geladen meine Telefonkontakte in Tableview
mit Namen und Nummer, aber es die Kontakte laden Namen als zufällig, ich möchte Kontaktname muss alphabetischer Reihenfolge sein, dieladen Sie Kontaktliste in alphabetischer Reihenfolge in swift
Hier ist mein Beispielcode Zahl gleich:
func contactDetail() {
var myPhValue:NSString!
var myPBfirstname:NSString!
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
let addressBook : ABAddressBookRef? = ABAddressBookCreateWithOptions(nil, nil).takeRetainedValue()
ABAddressBookRequestAccessWithCompletion(addressBook, { (granted : Bool, error: CFError!) -> Void in
if granted == true {
let allContacts : NSArray = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue()
for contactRef:ABRecordRef in allContacts { // first name
myPBfirstname = ABRecordCopyValue(contactRef, kABPersonFirstNameProperty)?.takeRetainedValue() as! NSString? ?? ""
let myPBlastname = ABRecordCopyValue(contactRef, kABPersonLastNameProperty)?.takeRetainedValue() as! NSString? ?? ""
let phonesRef: ABMultiValueRef = ABRecordCopyValue(contactRef, kABPersonPhoneProperty)?.takeRetainedValue() as ABMultiValueRef? ?? ""
var phonesArray = Array<Dictionary<String,String>>()
for var i:Int = 0; i < ABMultiValueGetCount(phonesRef); i++ {
let myPhLabel = ABMultiValueCopyLabelAtIndex(phonesRef, i)?.takeRetainedValue() as NSString? ?? ""
myPhValue = ABMultiValueCopyValueAtIndex(phonesRef, i)?.takeRetainedValue() as! NSString? ?? ""
if myPhLabel.containsString("Mobile") {
}
}
let nameString = " "+(myPBlastname as String)
let nameValues = (myPBfirstname as String)+(nameString as String)
let contactDict : Dictionary = ["name": nameValues,"phone":myPhValue]
self.contactArray.addObject(contactDict)
if self.contactArray.count == 0 {
NSLog("contactValue is Zero")
}
else{
NSLog("count Value %d", self.contactArray.count)
}
}
}
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.contactTable.hidden = false
self.contactTable.reloadData()
})
})
})
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return contactArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell:UITableViewCell = self.contactTable.dequeueReusableCellWithIdentifier("cell") as UITableViewCell!
cell.selectionStyle = UITableViewCellSelectionStyle.None
cell.preservesSuperviewLayoutMargins = false
cell.separatorInset = UIEdgeInsetsZero
cell.layoutMargins = UIEdgeInsetsZero
cell.textLabel!.text = contactArray.valueForKey("name").objectAtIndex(indexPath.row) as? String
return cell
}
Art phonesArray und in Tableview dann zeigen. – sourav