我正在查询HealthKit并将其保存到CoreData。 我在单独的类中获取数据。在 TableViewController 中,我将数据附加到数组中:
if NSUserDefaults.standardUserDefaults().boolForKey("weightSwitch") == true {
xAxisDatesArray.append(cdFetchWeight.queryCoreDataDate())
yAxisValuesArray.append(cdFetchWeight.queryCoreDataData())
并将其传递到 tableView.dequeueReusableCellWithIdentifier
myCell.xAxisDates = xAxisDatesArray[indexPath.row]
myCell.yAxisValues = yAxisValuesArray[indexPath.row]
在UITableViewCell中,我初始化变量(yAxisValues,xAxisDates)并将它们传递到图表库中,该函数库获取x和y值并绘制图表。
class TableViewCell: UITableViewCell, TKChartDelegate {
var xAxisDates = []
var yAxisValues = []
plot....
我需要获取 yAxisValues 的最小值和最大值,以便我可以为数据设置适当的 y 轴范围。
我试图使用以下代码获取最小值和最大值:
func rangeMinAndMax(){
let minYvalue = minElement(yAxisValues)
let maxYvalue = maxElement(yAxisValues)
}
但这会产生错误:泛型参数"R.Generator.Element"不能绑定到非@objc协议类型"AnyObject"
- 问题:为什么以及如何修复它?
任何帮助将不胜感激!
在这种情况下,要做的是扔掉所有误导性的渣滓,并将其归结为最简单的情况:
let arr : [AnyObject] = [1,2,3]
let min = minElement(arr) // same error: "Generic parameter blah-de-blah..."
所以,你看,minElement
不适用于 AnyObject 数组,这就是错误告诉你的。原因很明显:AnyObject 不是可比的。一堆 AnyObject 的东西没有"最小值";一个 AnyObject "小于"另一个 AnyObject 的整个概念是未定义的。您需要将数组转换为minElement
可以处理的数组,即某种可比数组。
例如,在该代码中,我可以像这样解决问题:
let arr : [AnyObject] = [1,2,3]
let min = minElement(arr as [Int])
这就是你需要做的事情。当然,你投射到什么取决于这些元素实际上是什么。在我看来,似乎可能会分别是 Double 和 NSDate,但这只是一个猜测;我不知道你的数组里有什么。你(大概)。请注意,NSDate 不是可比较的,因此您将有更多的工作要做。