概念性问题。为什么我的函数调用仅在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&#的成员39;
答案 0 :(得分:4)
如果将该行移出方法范围,实际上是将局部变量转换为属性。这样,Answer
属性对所有实例方法都可见,但也可以从外部访问。
您的情况下的问题是该属性是使用实例函数的返回值初始化的,该函数间接引用self
- 但swift在初始化期间不允许引用self
,这就是你有编译错误的原因。
答案 1 :(得分:1)
你试图在类体中调用一个函数,而不是在一个方法中调用它。
答案 2 :(得分:1)
您当然可以创建计算属性。返回计算值的属性: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html#//apple_ref/doc/uid/TP40014097-CH14-ID259
这些方面应该有效:
var answer : [Float] { return calculate(forceView2, stiffView2, springNumView2) }