load contact list in alphabetic order in swift
<p>I have small problem in load phone contacts in view controller, i successfully loaded my phone contacts in <code>Tableview</code> with names and number, but it the contacts loading names as randomly, i want contact name must be alphabetic order which equal to number </p>

<p><strong>Here is my sample code:</strong> </p>

<pre><code>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!) -&gt; 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&lt;Dictionary&lt;String,String&gt;&gt;()
                    for var i:Int = 0; i &lt; 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(), { () -&gt; Void in

                self.contactTable.hidden = false
                self.contactTable.reloadData()


            })
        })
    })

}



func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int
{
 return contactArray.count
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; 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

}
</code></pre>