Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我的函数调用只在viewDidLoad中工作_Ios_Xcode_Swift - Fatal编程技术网

Ios 为什么我的函数调用只在viewDidLoad中工作

Ios 为什么我的函数调用只在viewDidLoad中工作,ios,xcode,swift,Ios,Xcode,Swift,概念问题。为什么我的函数调用只在viewDidLoad中工作 import UIKit class ViewController2: UITableViewController, UITableViewDataSource { @IBOutlet var tableview2: UITableView! var forceView2 = [Float]() var stiffView2 = [Float]() var springNumView2 : NS

概念问题。为什么我的函数调用只在viewDidLoad中工作

import UIKit

class ViewController2: UITableViewController, UITableViewDataSource {


    @IBOutlet var tableview2: UITableView!

    var forceView2 = [Float]()
    var stiffView2 = [Float]()
    var springNumView2 : NSInteger = NSInteger()  

    override func viewDidLoad() {
        super.viewDidLoad()

        println(self.forceView2)
        println(self.stiffView2)
        println(self.springNumView2)

        var Answer = calculate(forceView2, stiffView2, springNumView2)

        println(Answer.self)            
    }

如果var Answer=calculate(forceView2、stiffView2、springNumView2)放置在viewDidLoad上方,“ViewController2.type”错误没有名为“forceView2”的成员。

您试图在类主体中调用函数,而不是在方法中调用函数,这就是原因。

您试图在类主体中调用函数,而不是在方法中调用函数,这就是原因。

如果将该行移出方法范围,实际上,您正在将局部变量转换为属性。这样,
Answer
属性对所有实例方法都可见,但也可以从外部访问


您案例中的问题是,属性是使用实例函数的返回值初始化的,该函数间接引用了
self
——但swift不允许在初始化过程中引用
self
,这就是您出现编译错误的原因。

如果将该行移出方法范围,实际上,您正在将局部变量转换为属性。这样,
Answer
属性对所有实例方法都可见,但也可以从外部访问


您案例中的问题是,属性是使用实例函数的返回值初始化的,该函数间接引用了
self
——但swift不允许在初始化过程中引用
self
,这就是出现编译错误的原因。

当然可以创建计算属性。返回计算值的属性:

按照这些思路应该可以做到:

var answer : [Float] { return calculate(forceView2, stiffView2, springNumView2) }

当然,您可以创建计算属性。返回计算值的属性:

按照这些思路应该可以做到:

var answer : [Float] { return calculate(forceView2, stiffView2, springNumView2) }

因为您正在调用类主体中的函数。不使用方法。请看这里:因为您正在调用类主体中的函数。不使用方法。请在此处查看:提供错误预期类型。。。Answer的变量是浮点值数组。@Cherry_thia,很抱歉它缺少“:”之后和“{”之前的返回值类型。您能用编辑过的版本再试一次吗?现在应该是正确的。给出了一个错误预期类型…Answer的变量是浮点值数组。@Cherry_thia,很抱歉它缺少“:”之后和“{”之前的返回值类型.您能用编辑过的版本再试一次吗?现在应该是正确的。