Ich habe eine Tabellenansicht, die die JSON-Daten von einer URL dpslayt. Alles funktioniert gut. Was ich brauche ist? In meiner Tabellenansicht habe ich ein Label namens "name label". Das wird den Namen in meiner Tabellenansicht anzeigen.Wie man A - z in der Tabellenansicht sortiert swift 2.0
Und ich habe eine Menüoption mit einer Schaltfläche namens "sort Daten A - z" .Wenn ich darauf klicken, sollten meine Tabellenansicht Daten mit der Sortierung des Datums aus A-z Alphabete Reihenfolge (My Name Titel) neu laden.
Dies ist meine Schaltfläche Aktion:
@IBAction func sortByAZBtnPress(sender: AnyObject) {
}
Mein viewcontroller.swift
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var RightMenu: UIView!
@IBOutlet weak var tableView: UITableView! // UITable view declaration
@IBOutlet weak var Resultcount: UILabel! // count label
var arrDict :NSMutableArray=[] // array to store the value from json
let cellSpacingHeight: CGFloat = 5 // cell spacing from each cell in table view
override func viewDidLoad() {
super.viewDidLoad()
self.jsonParsingFromURL() // call the json method
let nib = UINib(nibName:"customCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "cell")
RightMenu.layer.borderWidth = 1
}
// web services method
func jsonParsingFromURL() {
let url = NSURL(string: "http://sampleUrl.com”)
let session = NSURLSession.sharedSession()
let request = NSURLRequest(URL: url!)
let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
// print("done, error: \(error)")
if error == nil
{
dispatch_async(dispatch_get_main_queue()){
self.arrDict=(try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)) as! NSMutableArray
//print(self.arrDict)
if (self.arrDict.count>0)
{
self.Resultcount.text = "\(self.arrDict.count) Results"
self.tableView.reloadData()
}}
// arrDict.addObject((dict.valueForKey("xxxx")
}
}
dataTask.resume()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return self.arrDict.count
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
// calling each cell based on tap and users (premium/non premium)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:customCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! customCell
cell.vendorName.text=arrDict[indexPath.section] .valueForKey("name") as? String
cell.vendorAddress.text=arrDict[indexPath.section] .valueForKey("address") as? String
return cell
}
// MARK:
// MARK: Sort Method
@IBAction func sortByRevBtnPress(sender: AnyObject) {
self.indicator.startAnimating()
self.indicator.hidden = false
RightMenu.hidden = true
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (Int64)(1 * NSEC_PER_SEC)), dispatch_get_main_queue()){
self.indicator.stopAnimating()
self.indicator.hidden = true
};
self.tableView.reloadData()
}
@IBAction func sortByAZBtnPress(sender: AnyObject) {
}
}
Bitte helfen Sie mir. Ich bin nicht immer klare Vorstellung, das zu tun ... Danke
Aktualisiert:
(
{
ad = 0;
address = "900 York Mills Rd, Toronto, ON M3B 3H2, Canada";
"category_id" = 1;
latitude = "43.7563";
longitude = "-79.3495";
name = "Honeybee Restaurant";
phone =;
rating = "5.0";
},
{
ad = 1;
address = "1677 Wilson Ave, Toronto, ON M3L 1A5, Canada";
"category_id" = 1;
latitude = "43.7194";
longitude = "-79.5153";
name = "Maki My Way";
phone = 9875463254;
rating = "4.0";
},
{
ad = 1;
address = "75 Bremner Blvd, Toronto, ON M5J 0A1, Canada";
"category_id" = 1;
latitude = "43.6429";
longitude = "-79.3814";
name = "Blow Fish Restaurant";
phone = 9873245610;
rating = "5.0";
},
{
ad = 0;
address = "4150 Yonge St, Toronto, ON M2P 2C6, Canada";
"category_id" = 1;
latitude = "43.747";
longitude = "-79.4079";
name = "SaigonFlower Restaurant";
phone = 7892345621;
rating = "3.0";
},
{
ad = 1;
address = "604 King St W, Toronto, ON M5V 1M6, Canada";
"category_id" = 1;
latitude = "43.6445";
longitude = "-79.4004";
name = "Sushi Gen";
phone =65;
rating = "2.0";
},
)
Ich bekomme Fehler, dass 'Wert des Typs 'NSMutableArray' hat kein Mitglied 'sortInPlace' ' – user5513630
großartig! ... funktioniert klar. Ich habe noch einen Zweifel. Wie weise habe ich einige JSON-Daten namens "Bewertung", "Datum der Post" .In meiner Tabelle auch Bewertung, Datum des Post-Datum wird angezeigt.Ich habe auch nach Bewertung sortieren, sortieren nach Datum. Wie kann ich dafür auch tun. Ich habe auch 2 Knopfaktion für sortiere nach Bewertung, sortiere nach dateofpost ... wenn du sagst, dass das sehr hilfreich sein wird. Ich bin mit mehr als 2 Stunden geschlagen. Aber du bist erstaunt !!! – user5513630
Ich habe die gleiche Logik verwendet, aber es funktioniert nicht 'arrDict.sortUsingComparator {(dict1, dict2) -> NSComparisonResult in wenn let name1 = dict1 [" rating "] als? String, Name2 = dict2 ["Bewertung"] als? String { return name1.compare (name2) } return .OrderedAscending } self.tableView.reloadData() ' – user5513630