2

Ich verwende diesen Code wo Zeit ist der Name der Spalte, die Date() Objekt speichert.Wie Daten aus Stammdaten nach Datum als Abschnitt abgerufen werden?

Ich möchte zB Abschnitt Basis auf Datum erhalten.

29-11-2016 Gesamt row = 3

28-11-2016 Gesamt row = 1

aber derzeit separate Sektion für jede Zeitdifferenz auf gleichen Datum erhalten.

Also, wie kann ich dies mit Fetch Request Controller erreichen. ????

Vielen Dank im Voraus.

+0

Wenn Sie keine Stunden, Minuten und Sekunden verwenden, können Sie besser als "Datum" (zB: 29-11-2016) in "Kerndaten" speichern. Dann gruppieren sich Ihre Daten basierend auf dem Datum. –

+0

Sie meinen nur speichern Datum nicht Zeit richtig ??? – Chandan

+0

Ja, genau richtig. –

Antwort

0

Dieses Problem hat bereits eine Lösung im Stapelüberlauf. Es wird funktionieren, überprüfen Sie es bitte.

import UIKit 
import CoreData 

class ExampleViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate { 

    @IBOutlet weak var tableView: UITableView! 

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
    let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext! 
    var fetchedResultController: NSFetchedResultsController = NSFetchedResultsController() 

    var orders = [Order]() 
    var startDate : NSDate = NSDate() 
    var endDate : NSDate = NSDate() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     fetchedResultController.delegate = self 
     tableView.dataSource = self 
     tableView.delegate = self 

     fetchData() 
    } 

    func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return fetchedResultController.fetchedObjects!.count 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     let order = fetchedResultController.fetchedObjects![section] as! Order 
     return ((order.products?.count ?? 0) + (order.services?.count ?? 0)) 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let textCellIdentifier = "ExampleTableViewCell" 
     let row = indexPath.row 

     let cell = tableView.dequeueReusableCellWithIdentifier(textCellIdentifier, forIndexPath: indexPath) as! ExampleTableViewCell 

     let order = fetchedResultController.fetchedObjects![indexPath.section] as! Order // Data fetched using NSFetchedResultsController 
     let products = (order.products?.allObjects ?? [Product]()) as! [Product] // Swift Array 
     let services = (order.services?.allObjects ?? [Service]()) as! [Service] // Swift Array 

     if (row < products.count) { // this is a Product row 
      cell.orderLabel.text = products[row].name! 
     } else { // this is a Service row 
      cell.orderLabel.text = services[row-products.count].name! 
     } 
     return cell 
    } 

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     let order = fetchedResultController.fetchedObjects![section] as! Order 
     return "\(order.date)" 
    } 


    func orderFetchRequest() -> NSFetchRequest { 
     let fetchRequest = NSFetchRequest(entityName: "Order") 
     let sortDescriptor = NSSortDescriptor(key: "date", ascending: true) 
     let predicate = NSPredicate(format: "date >= %@ AND date <= %@", startDate, endDate) // startDate and endData are defined elsewhere 

     fetchRequest.sortDescriptors = [sortDescriptor] 
     fetchRequest.predicate = predicate 

     return fetchRequest 
    } 

    func fetchData() { 
     let fetchRequest = orderFetchRequest() 
     fetchedResultController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: managedObjectContext, sectionNameKeyPath:nil, cacheName: nil) 

     do { 
      try fetchedResultController.performFetch() 
     } 
     catch let error as NSError { 
      print("Could not fetch \(error), \(error.userInfo)") 
     } 
    } 
} 

Ich einfach kopieren und einfügen. Hoffe, es wird für dich arbeiten. Wenn nicht, dann werde ich dir helfen.

+0

Hallo danke für deine Antwort, aber der obige Code ist für Abrufergebnisse zwischen zwei Daten. aber meine Frage ist, wie man datumsweisen Abschnitt für jedes Datum eine Gruppe von Ergebnis holt. bedeutet Datum ist Abschnitt und Ergebnis wird die Nummer der Zeile für jedes Datum sein. – Chandan

Verwandte Themen