错误:泛型参数'R.Generator.Element'无法绑定到非@objc协议类型'AnyObject'



我正在查询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 不是可比较的,因此您将有更多的工作要做。

相关内容

  • 没有找到相关文章

最新更新