ios - 错误: Generic parameter 'R.Generator.Element' cannot be bound to non-@objc protocol type 'AnyObject'

标签 ios

我正在查询 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”无法绑定(bind)到非@objc协议(protocol)类型“AnyObject”

- 问题:为什么以及如何修复它?

任何帮助将不胜感激!

最佳答案

在这种情况下要做的事情就是扔掉所有误导性的糟粕,并将其归结为最简单的情况:

let arr : [AnyObject] = [1,2,3]
let min = minElement(arr) // same error: "Generic parameter blah-de-blah..."

因此,您会看到,minElement 不适用于 AnyObject 数组,这就是错误告诉您的内容。原因很明显:AnyObject 不是 Comparable。对于一堆 AnyObject 事物来说,没有“最小值”;一个 AnyObject“小于”另一个 AnyObject 的整个概念是未定义的。您需要将数组转换为 minElement 可以处理的数组,即某种 Comparable。

例如,在该代码中,我可以像这样解决问题:

let arr : [AnyObject] = [1,2,3]
let min = minElement(arr as [Int])

这就是你需要做的事情。当然,你要放弃什么取决于这些元素实际上是什么。在我看来,可能分别是 Double 和 NSDate,但这只是一个猜测;我不知道你的数组里有什么。你会(大概)。请注意,NSDate 不是 Comparable,因此您需要做更多的工作。

关于ios - 错误: Generic parameter 'R.Generator.Element' cannot be bound to non-@objc protocol type 'AnyObject' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27679841/

相关文章:

ios - Apple Mach-O 链接器错误 - ld : file not found: -ObjC

ios - 主题未在 Firebase 通知中创建?

ios - 在印度语言环境中使用 NSNumberFormatter 时如何显示阿拉伯数字?

ios - 约束变化不起作用

ios - 阴影在 iphone 上是完美的,但在 ipad 上它只是变得非常短

iOS iPad 有 1GB RAM 为什么我的应用程序在使用 30MB 后被杀死

ios - Q : create a vc from sb. instantiateViewController(withIdentifier:) 不能在swift中使用它的属性

ios - 如何在不分配标签属性的情况下识别 View 对象

ios - DRM 如何为电子书发挥作用?

ios - 如何将多张图片存储到 Parse 中的单个列?