Ios 为什么我的函数调用只在viewDidLoad中工作
概念问题。为什么我的函数调用只在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
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,很抱歉它缺少“:”之后和“{”之前的返回值类型.您能用编辑过的版本再试一次吗?现在应该是正确的。