无法弄清楚“ViewController”类型的值没有成员“averageIsAbove”

Posted

技术标签:

【中文标题】无法弄清楚“ViewController”类型的值没有成员“averageIsAbove”【英文标题】:Can't figure out Value of Type "ViewController' has no member 'averageIsAbove' 【发布时间】:2017-01-16 23:47:29 【问题描述】:

我是 Swift 的新手,我似乎不知道自己做错了什么。

我的测试文件如下 - “ViewController”类型的值没有成员“averageIsAbove”

func testAverageIsAbove75(a: Double, b: Double, c: Double) 
    XCTAssertFalse(testVC.averageIsAbove(a:76, b:75, c:71.9), "Average is below 75, it should return false."  )

MViewController 文件有这个功能:

func averageIsAbove75(a: Double, b: Double, c: Double) -> Bool
    if (a * b * c) / 3 > 75 
       return true
    
    else 
        return false
    
 

【问题讨论】:

你创建了一个testVC实例还是你的类叫testVC? 我没有创建 testVC,它是我们实验室的一部分,我已经坚持了好几天了。 'MViewController' 是实际名称,还是拼写错误?您是否使用 @testable 将 ViewController 类导入到测试中? 'MViewController' 是错字还是名字?如果是名字,那么不用testVC.averageIsAbove75,需要把testVC换成MViewController。 【参考方案1】:

首先,您需要让每个人都可以使用该方法。在关键字 func 之前添加 class 以在您的 ViewController 类中执行此操作。

接下来,您调用的是testAverageIsAbove,但您的函数名为averageIsAbove75。尝试更改以下内容:

 XCTAssertFalse(testVC.averageIsAbove(a:76, b:75, c:71.9), "Average is below 75, it should return false."  ) 

到这里:

XCTAssertFalse(testVC.averageIsAbove75(a:76, b:75, c:71.9), "Average is below 75, it should return false."  )

【讨论】:

我试过了,还是不行。仍然显示 -“ViewController”类型的值没有成员“averageIsAbove” 使函数成为公共函数 很抱歉,我不太确定该怎么做,请您解释一下或给我看好吗? 更新答案。 具有averageIsAboive75 功能的视图控制器的类名是什么?是 MViewController 吗?【参考方案2】:
class ViewController1 : UIViewController 
   func testAverageIsAbove75(a: Double, b: Double, c: Double) 
       XCTAssertFalse(ViewController2.averageIsAbove75(a:76, b:75, c:71.9), "Average is below 75, it should return false."  )
   



class ViewController2 
   class func averageIsAbove75(a: Double, b: Double, c: Double) -> Bool
        if (a * b * c) / 3 > 75 
           return true
        
   else 
          return false
        
     

【讨论】:

或者删除func之前的类,并首先在ViewController1中创建一个ViewController2的实例,比如let testVC = ViewController2(),但是你必须使用init从某个类中继承ViewController2

以上是关于无法弄清楚“ViewController”类型的值没有成员“averageIsAbove”的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚如何解决在二叉树中返回两个总和为目标值的值的逻辑缺陷

使用 mypy 进行类型检查,我无法弄清楚为啥会发生此错误 [关闭]

无法弄清楚如何防止 Date 类型崩溃并在 Swift 3 中包装

无法将类型“类”的值分配给类型“[类]”

无法弄清楚 Swift 中 AudioQueueDispose 的用法

无法将“ViewController.Type”类型的值转换为预期的参数类型“UIViewController”