获取要用于图表的核心数据

问题描述 投票:0回答:1

是否有用于图表的核心数据示例?我一直在尝试示例项目,但没有成功。我知道在声明数组时如何使用数据,在使用获取的结果时很难。

这是我在图表视图中找到的示例:

var chartLegend = ["11-14", "11-15", "11-16", "11-17", "11-18", "11-19", "11-20"]
var chartData = [70, 80, 76, 88, 90, 69, 74]

func numberOfBarsInBarChartView(barChartView: JBBarChartView!) -> UInt {
    return UInt(chartData.count)
}

func barChartView(barChartView: JBBarChartView!, heightForBarViewAtIndex index: UInt) -> CGFloat {
    return CGFloat(chartData[Int(index)])
}

func barChartView(barChartView: JBBarChartView!, colorForBarViewAtIndex index: UInt) -> UIColor! {
    return (index % 2 == 0) ? UIColor.lightGrayColor() : UIColor.whiteColor()
}

func barChartView(barChartView: JBBarChartView!, didSelectBarAtIndex index: UInt) {
    let data = chartData[Int(index)]
    let key = chartLegend[Int(index)]

    infoLabel.text = "Weather on \(key): \(data)"
}

func didDeselectBarChartView(barChartView: JBBarChartView!) {
    infoLabel.text = ""
}

这是我用于获取数据的内容:

let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

var fetchedResultController: NSFetchedResultsController = NSFetchedResultsController()


func getFetchedResultController() -> NSFetchedResultsController {
    fetchedResultController = NSFetchedResultsController(fetchRequest: taskFetchRequest(), managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
    return fetchedResultController
}

func taskFetchRequest() -> NSFetchRequest {
    let fetchRequest = NSFetchRequest(entityName: "Entity")
    let timeSortDescriptor = NSSortDescriptor(key: "attribute1",
                                              ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))
    let milesSortDescriptor = NSSortDescriptor(key: "attribute2",
                                               ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))

    fetchRequest.sortDescriptors = [timeSortDescriptor, milesSortDescriptor]

    return fetchRequest
}

这是我能够检索核心数据并将其用于在表中查看的方式。如何使用它在图表中查看?

 let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

var fetchedResultController: NSFetchedResultsController = NSFetchedResultsController()

override func viewDidLoad() {
    super.viewDidLoad()
    fetchedResultController = getFetchedResultController()
    fetchedResultController.delegate = self
    do {
        try fetchedResultController.performFetch()
    } catch _ {
    }
  }


// MARK:- Retrieve Tasks

func getFetchedResultController() -> NSFetchedResultsController {
    fetchedResultController = NSFetchedResultsController(fetchRequest: taskFetchRequest(), managedObjectContext: managedObjectContext, sectionNameKeyPath: nil, cacheName: nil)
    return fetchedResultController
}

func taskFetchRequest() -> NSFetchRequest {
    let fetchRequest = NSFetchRequest(entityName: "RunTime")
    let timeSortDescriptor = NSSortDescriptor(key: "time",
                                                  ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))
    let milesSortDescriptor = NSSortDescriptor(key: "miles",
                                                   ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))

    fetchRequest.sortDescriptors = [timeSortDescriptor, milesSortDescriptor]

    return fetchRequest
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// MARK: - TableView data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    let numberOfSections = fetchedResultController.sections?.count
    return numberOfSections!
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let numberOfRowsInSection = fetchedResultController.sections?[section].numberOfObjects
    return numberOfRowsInSection!
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
    let runtime = fetchedResultController.objectAtIndexPath(indexPath) as! RunTime
    cell.textLabel?.text = runtime.time
    cell.detailTextLabel!.text = runtime.miles

    return cell
}

// MARK: - TableView Deleteƒ

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
    let managedObject:NSManagedObject = fetchedResultController.objectAtIndexPath(indexPath) as! NSManagedObject
    managedObjectContext.deleteObject(managedObject)
    do {
        try managedObjectContext.save()
    } catch _ {
    }
}

// MARK: - TableView Refresh

func controllerDidChangeContent(controller: NSFetchedResultsController) {
    tableView.reloadData()
}
swift core-data view charts fetch
1个回答
0
投票

使用iOS 13上的SwiftUI,现在使用@FetchRequest属性包装器应该非常容易。

© www.soinside.com 2019 - 2024. All rights reserved.